81 lines
2.7 KiB
JavaScript
81 lines
2.7 KiB
JavaScript
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) {
|
|
// کاربرِ زیرمجموعه همون لحظهی ساخت توسطِ صاحبِ اکانت کامل ساخته میشه (نام،
|
|
// نامکاربری، رمز) — user_type براش معنا نداره، پس نباید وارد ویزاردِ ثبتنام بشه
|
|
if (user?.is_sub_user) {
|
|
return Boolean(user?.user_name && user?.password && user?.first_name)
|
|
}
|
|
const hasPassword = isSocialUser(user) || Boolean(user?.password)
|
|
return Boolean(
|
|
user?.user_name &&
|
|
hasPassword &&
|
|
user?.first_name &&
|
|
user?.user_type
|
|
)
|
|
}
|
|
|
|
function getRegistrationStep (user) {
|
|
if (user?.is_sub_user) return 'complete'
|
|
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 needsUsernameAndPassword (user) {
|
|
return isSocialUser(user) && (!user?.user_name || !user?.password)
|
|
}
|
|
|
|
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,
|
|
is_sub_user: Boolean(user.is_sub_user),
|
|
sub_user_permissions: user.is_sub_user ? (user.sub_user_permissions || []) : undefined,
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
isGoogleUser,
|
|
isInstagramUser,
|
|
isSocialUser,
|
|
isBasicRegistrationComplete,
|
|
getRegistrationStep,
|
|
isRegistrationIncomplete,
|
|
needsUsernameAndPassword,
|
|
buildAuthResponse
|
|
}
|