@wailroth/adonis-ally-apple-v6
Version:
Ally driver for Apple Sign In
71 lines (63 loc) • 1.79 kB
text/typescript
/**
*
* Access token returned by your driver implementation. An access
* token must have "token" and "type" properties and you may
* define additional properties (if needed)
*/
import { Oauth2AccessToken } from '@adonisjs/ally/types'
import { AllyUserContract, LiteralStringUnion } from '@adonisjs/ally/types'
import { DateTime } from 'luxon'
/**
* Shape of Apple Access Token
*/
export type AppleAccessToken = Oauth2AccessToken & {
id_token: string
refreshToken: string
expiresIn: number
expiresAt: DateTime
}
/**
* Shape of the Apple decoded token
* https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_js/incorporating_sign_in_with_apple_into_other_platforms
*/
export type AppleTokenDecoded = {
iss: string
aud: string
exp: number
iat: number
sub: string
at_hash: string
email: string
email_verified: 'true' | 'false'
user?: {
email?: string
name?: {
firstName: string
lastName: string
}
}
is_private_email: boolean
auth_time: number
nonce_supported: boolean
}
/**
* Allowed Apple Sign In scopes
*/
export type AppleScopes = 'email' | 'string'
/**
* Options available for Apple
* @param appId App ID of your app
* @param teamId Team ID of your Apple Developer Account
* @param clientId Key ID, received from https://developer.apple.com/account/resources/authkeys/list
* @param clientSecret Private key, downloaded from https://developer.apple.com/account/resources/authkeys/list
*/
export type AppleDriverConfig = {
driver: 'apple'
appId: string
teamId: string
clientId: string
clientSecret: string
callbackUrl: string
scopes?: LiteralStringUnion<AppleScopes>[]
}
export interface AppleUserContract extends Omit<AllyUserContract<AppleAccessToken>, 'token'> {}