| | const jwt = require('jsonwebtoken'); |
| | const { logger } = require('@librechat/data-schemas'); |
| | const { Strategy: AppleStrategy } = require('passport-apple'); |
| | const socialLogin = require('./socialLogin'); |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | const getProfileDetails = ({ idToken, profile }) => { |
| | if (!idToken) { |
| | logger.error('idToken is missing'); |
| | throw new Error('idToken is missing'); |
| | } |
| |
|
| | const decoded = jwt.decode(idToken); |
| |
|
| | logger.debug(`Decoded Apple JWT: ${JSON.stringify(decoded, null, 2)}`); |
| |
|
| | return { |
| | email: decoded.email, |
| | id: decoded.sub, |
| | avatarUrl: null, |
| | username: decoded.email ? decoded.email.split('@')[0].toLowerCase() : `user_${decoded.sub}`, |
| | name: decoded.name |
| | ? `${decoded.name.firstName} ${decoded.name.lastName}` |
| | : profile.displayName || null, |
| | emailVerified: true, |
| | }; |
| | }; |
| |
|
| | |
| | const appleLogin = socialLogin('apple', getProfileDetails); |
| |
|
| | module.exports = () => |
| | new AppleStrategy( |
| | { |
| | clientID: process.env.APPLE_CLIENT_ID, |
| | teamID: process.env.APPLE_TEAM_ID, |
| | callbackURL: `${process.env.DOMAIN_SERVER}${process.env.APPLE_CALLBACK_URL}`, |
| | keyID: process.env.APPLE_KEY_ID, |
| | privateKeyLocation: process.env.APPLE_PRIVATE_KEY_PATH, |
| | passReqToCallback: false, |
| | }, |
| | appleLogin, |
| | ); |
| |
|