From 534191f7fea9da4b03db36da1ba5f4833b298967 Mon Sep 17 00:00:00 2001 From: Yoann Fleury Date: Thu, 14 Jul 2022 09:28:11 +0200 Subject: [PATCH] feat(provider): migrate gitlab provider to ts --- packages/next-auth/src/providers/gitlab.js | 22 ------- packages/next-auth/src/providers/gitlab.ts | 72 ++++++++++++++++++++++ 2 files changed, 72 insertions(+), 22 deletions(-) delete mode 100644 packages/next-auth/src/providers/gitlab.js create mode 100644 packages/next-auth/src/providers/gitlab.ts diff --git a/packages/next-auth/src/providers/gitlab.js b/packages/next-auth/src/providers/gitlab.js deleted file mode 100644 index 318d646d4f..0000000000 --- a/packages/next-auth/src/providers/gitlab.js +++ /dev/null @@ -1,22 +0,0 @@ -/** @type {import("src/providers").OAuthProvider} */ -/** @type {import(".").OAuthProvider} */ -export default function GitLab(options) { - return { - id: "gitlab", - name: "GitLab", - type: "oauth", - authorization: "https://gitlab.com/oauth/authorize?scope=read_user", - token: "https://gitlab.com/oauth/token", - userinfo: "https://gitlab.com/api/v4/user", - checks: ["pkce", "state"], - profile(profile) { - return { - id: profile.id, - name: profile.username, - email: profile.email, - image: profile.avatar_url, - } - }, - options, - } -} diff --git a/packages/next-auth/src/providers/gitlab.ts b/packages/next-auth/src/providers/gitlab.ts new file mode 100644 index 0000000000..126a29e68d --- /dev/null +++ b/packages/next-auth/src/providers/gitlab.ts @@ -0,0 +1,72 @@ +import type { OAuthConfig, OAuthUserConfig } from "." + +export interface GitLabProfile extends Record { + id: number + username: string + email: string + name: string + state: string + avatar_url: string + web_url: string + created_at: string + bio: string + location?: string + public_email: string + skype: string + linkedin: string + twitter: string + website_url: string + organization: string + job_title: string + pronouns: string + bot: boolean + work_information?: string + followers: number + following: number + local_time: string + last_sign_in_at: string + confirmed_at: string + theme_id: number + last_activity_on: string + color_scheme_id: number + projects_limit: number + current_sign_in_at: string + identities: Array<{ + provider: string + extern_uid: string + }> + can_create_group: boolean + can_create_project: boolean + two_factor_enabled: boolean + external: boolean + private_profile: boolean + commit_email: string + shared_runners_minutes_limit: number + extra_shared_runners_minutes_limit: number +} + +export default function GitLab

( + options: OAuthUserConfig

+): OAuthConfig

{ + return { + id: "gitlab", + name: "GitLab", + type: "oauth", + authorization: { + url: "https://gitlab.com/oauth/authorize", + params: { scope: "read_user" }, + }, + token: "https://gitlab.com/oauth/token", + userinfo: "https://gitlab.com/api/v4/user", + checks: ["pkce", "state"], + profile(profile) { + return { + id: profile.id.toString(), + name: profile.name ?? profile.username, + email: profile.email, + image: profile.avatar_url, + } + }, + options, + } +}