feat(settings): add user profile and password management
This commit is contained in:
42
src/hooks/setting-hooks.ts
Normal file
42
src/hooks/setting-hooks.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import { useUserData } from "./useUserData";
|
||||
import { useEffect } from "react";
|
||||
import logger from "@/utils/logger";
|
||||
import type { IUserInfo } from "@/interfaces/database/user-setting";
|
||||
import userService from "@/services/user_service";
|
||||
import { rsaPsw } from "../utils/encryption";
|
||||
|
||||
export function useProfileSetting() {
|
||||
const {fetchUserInfo, userInfo} = useUserData();
|
||||
|
||||
useEffect(() => {
|
||||
fetchUserInfo();
|
||||
}, [fetchUserInfo]);
|
||||
|
||||
const updateUserInfo = async (newUserInfo: Partial<IUserInfo>) => {
|
||||
try {
|
||||
await userService.updateSetting(newUserInfo);
|
||||
} catch (error) {
|
||||
logger.error('更新用户信息失败:', error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
const changeUserPassword = async (data: { password: string; new_password: string }) => {
|
||||
try {
|
||||
const newPassword = rsaPsw(data.new_password);
|
||||
const oldPassword = rsaPsw(data.password);
|
||||
const res = await userService.updatePassword({
|
||||
password: oldPassword,
|
||||
new_password: newPassword,
|
||||
});
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
userInfo,
|
||||
updateUserInfo,
|
||||
changeUserPassword,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user