full
This commit is contained in:
63
utils/authSteps.js
Normal file
63
utils/authSteps.js
Normal file
@@ -0,0 +1,63 @@
|
||||
function isGoogleUser (user) {
|
||||
return user?.auth_provider === 'google' || Boolean(user?.google_id)
|
||||
}
|
||||
|
||||
function isInstagramUser (user) {
|
||||
return user?.auth_provider === 'instagram' || Boolean(user?.instagram_id)
|
||||
}
|
||||
|
||||
/** Social logins (Google, Instagram) skip the mobile-password step — they authenticate via the provider instead. */
|
||||
function isSocialUser (user) {
|
||||
return isGoogleUser(user) || isInstagramUser(user)
|
||||
}
|
||||
|
||||
function isBasicRegistrationComplete (user) {
|
||||
const hasPassword = isSocialUser(user) || Boolean(user?.password)
|
||||
return Boolean(
|
||||
user?.user_name &&
|
||||
hasPassword &&
|
||||
user?.first_name &&
|
||||
user?.user_type
|
||||
)
|
||||
}
|
||||
|
||||
function getRegistrationStep (user) {
|
||||
if (!user?.user_name) return 'user_name'
|
||||
if (!isSocialUser(user) && !user.password) return 'password'
|
||||
if (!user.first_name) return 'first_name'
|
||||
if (!user.user_type) return 'registration_choice'
|
||||
return 'complete'
|
||||
}
|
||||
|
||||
function isRegistrationIncomplete (user) {
|
||||
return !isBasicRegistrationComplete(user)
|
||||
}
|
||||
|
||||
function buildAuthResponse (user, token) {
|
||||
const step = getRegistrationStep(user)
|
||||
const incomplete = isRegistrationIncomplete(user)
|
||||
|
||||
return {
|
||||
message: 'ورود با موفقیت',
|
||||
token,
|
||||
step,
|
||||
auth_provider:
|
||||
user.auth_provider ||
|
||||
(user.google_id ? 'google' : user.instagram_id ? 'instagram' : 'mobile'),
|
||||
email: user.email || null,
|
||||
id: user._id != null ? String(user._id) : undefined,
|
||||
page: incomplete ? 'auth-page' : 'home',
|
||||
user_type: incomplete ? null : user.user_type,
|
||||
registrationComplete: !incomplete,
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
isGoogleUser,
|
||||
isInstagramUser,
|
||||
isSocialUser,
|
||||
isBasicRegistrationComplete,
|
||||
getRegistrationStep,
|
||||
isRegistrationIncomplete,
|
||||
buildAuthResponse
|
||||
}
|
||||
Reference in New Issue
Block a user