feat: 註冊登入流程修改
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
||||
login as apiLogin,
|
||||
logout as apiLogout,
|
||||
register as apiRegister,
|
||||
updateEmail as apiUpdateEmail,
|
||||
} from "@/api/auth";
|
||||
import {
|
||||
getProfile as apiGetProfile,
|
||||
@@ -19,6 +20,7 @@ import type {
|
||||
ChronicDisease,
|
||||
ConsentVersion,
|
||||
ExerciseFrequency,
|
||||
FitnessGroup,
|
||||
Gender,
|
||||
PainLevel,
|
||||
Profile,
|
||||
@@ -27,6 +29,7 @@ import type {
|
||||
RiskLevel,
|
||||
SelfAssessmentRequest,
|
||||
SelfAssessmentResponse,
|
||||
UpdateEmailResponse,
|
||||
WantedImprovement,
|
||||
} from "@/api/types";
|
||||
import {
|
||||
@@ -294,6 +297,9 @@ export const useAppStore = defineStore("app", () => {
|
||||
let authInitializationPromise: Promise<boolean> | null = null;
|
||||
/** 僅供前端顯示或其他使用者資料用途;course/group 不再傳送此值。 */
|
||||
const userID = ref("");
|
||||
const authGroup = ref<FitnessGroup | null>(null);
|
||||
const emailMissing = ref(false);
|
||||
const requiresEmailCompletion = computed(() => emailMissing.value);
|
||||
const userProfile = ref<UserProfile>(createEmptyUserProfile());
|
||||
const selfAssessment = ref<SelfAssessment>(createEmptySelfAssessment());
|
||||
const selfAssessmentLoading = ref(false);
|
||||
@@ -328,16 +334,10 @@ export const useAppStore = defineStore("app", () => {
|
||||
function setAuthenticated(response: AuthResponse) {
|
||||
isLoggedIn.value = true;
|
||||
userID.value = response.userID;
|
||||
|
||||
if (response.profile) {
|
||||
userProfile.value = applyProfileToStore(response.profile);
|
||||
return;
|
||||
}
|
||||
|
||||
const emptyProfile = createEmptyUserProfile();
|
||||
authGroup.value = response.group;
|
||||
emailMissing.value = response.mail === 1;
|
||||
userProfile.value = {
|
||||
...emptyProfile,
|
||||
name: response.userName,
|
||||
...createEmptyUserProfile(),
|
||||
phone: response.phone,
|
||||
};
|
||||
}
|
||||
@@ -388,10 +388,9 @@ export const useAppStore = defineStore("app", () => {
|
||||
const response: AuthResponse = USE_MOCK
|
||||
? {
|
||||
userID: "MOCK-USER",
|
||||
userName: "",
|
||||
phone,
|
||||
group: "medium",
|
||||
profile: null,
|
||||
mail: 0,
|
||||
}
|
||||
: await apiLogin({ phone, password });
|
||||
|
||||
@@ -411,10 +410,9 @@ export const useAppStore = defineStore("app", () => {
|
||||
const response: AuthResponse = USE_MOCK
|
||||
? {
|
||||
userID: "MOCK-USER",
|
||||
userName: "",
|
||||
phone: request.phone,
|
||||
group: "medium",
|
||||
profile: null,
|
||||
mail: 0,
|
||||
}
|
||||
: await apiRegister(request);
|
||||
|
||||
@@ -426,6 +424,8 @@ export const useAppStore = defineStore("app", () => {
|
||||
function clearAuthentication() {
|
||||
isLoggedIn.value = false;
|
||||
userID.value = "";
|
||||
authGroup.value = null;
|
||||
emailMissing.value = false;
|
||||
userProfile.value = createEmptyUserProfile();
|
||||
selfAssessment.value = createEmptySelfAssessment();
|
||||
selfAssessmentLoading.value = false;
|
||||
@@ -445,6 +445,16 @@ export const useAppStore = defineStore("app", () => {
|
||||
}
|
||||
}
|
||||
|
||||
async function updateEmail(email: string): Promise<UpdateEmailResponse> {
|
||||
const response: UpdateEmailResponse = USE_MOCK
|
||||
? { messageCode: "200", email, mail: 0 }
|
||||
: await apiUpdateEmail(email);
|
||||
|
||||
emailMissing.value = false;
|
||||
userProfile.value.email = response.email;
|
||||
return response;
|
||||
}
|
||||
|
||||
async function updateProfile(
|
||||
profile: Partial<EditableProfile>,
|
||||
): Promise<UserProfile> {
|
||||
@@ -628,6 +638,9 @@ export const useAppStore = defineStore("app", () => {
|
||||
isLoggedIn,
|
||||
isAuthInitialized,
|
||||
userID,
|
||||
authGroup,
|
||||
emailMissing,
|
||||
requiresEmailCompletion,
|
||||
userProfile,
|
||||
selfAssessment,
|
||||
selfAssessmentLoading,
|
||||
@@ -642,6 +655,7 @@ export const useAppStore = defineStore("app", () => {
|
||||
initializeAuthentication,
|
||||
logout,
|
||||
clearAuthentication,
|
||||
updateEmail,
|
||||
updateProfile,
|
||||
setSelfAssessment,
|
||||
setProvisionalSelfAssessment,
|
||||
|
||||
Reference in New Issue
Block a user