next-auth
Version:
Authentication for Next.js
56 lines (53 loc) • 1.7 kB
text/typescript
import type { OAuthConfig, OAuthUserConfig } from "."
export interface SlackProfile extends Record<string, any> {
ok: boolean
sub: string
"https://slack.com/user_id": string
"https://slack.com/team_id": string
email: string
email_verified: boolean
date_email_verified: number
name: string
picture: string
given_name: string
family_name: string
locale: string
"https://slack.com/team_name": string
"https://slack.com/team_domain": string
"https://slack.com/user_image_24": string
"https://slack.com/user_image_32": string
"https://slack.com/user_image_48": string
"https://slack.com/user_image_72": string
"https://slack.com/user_image_192": string
"https://slack.com/user_image_512": string
"https://slack.com/user_image_1024": string
"https://slack.com/team_image_34": string
"https://slack.com/team_image_44": string
"https://slack.com/team_image_68": string
"https://slack.com/team_image_88": string
"https://slack.com/team_image_102": string
"https://slack.com/team_image_132": string
"https://slack.com/team_image_230": string
"https://slack.com/team_image_default": boolean
}
export default function Slack<P extends SlackProfile>(
options: OAuthUserConfig<P>
): OAuthConfig<P> {
return {
id: "slack",
name: "Slack",
type: "oauth",
wellKnown: "https://slack.com/.well-known/openid-configuration",
authorization: { params: { scope: "openid profile email" } },
profile(profile) {
return {
id: profile.sub,
name: profile.name,
email: profile.email,
image: profile.picture,
}
},
style: { logo: "/slack.svg", bg: "#000", text: "#fff" },
options,
}
}