save user settings
parent
9fe78001e7
commit
2892476a23
|
@ -101,6 +101,8 @@ export async function SignUp(req: Request, res: Response) {
|
|||
account_name: accountName,
|
||||
username: username,
|
||||
password: hashedPassword,
|
||||
language: "en", // TODO: get language from request
|
||||
analytics_enabled: true,
|
||||
})
|
||||
.then((user) => {
|
||||
logger.debug(
|
||||
|
@ -213,7 +215,13 @@ export async function GetUser(req: Request, res: Response) {
|
|||
where: {
|
||||
user_id: session.user_id,
|
||||
},
|
||||
attributes: ["user_id", "username", "store_id"],
|
||||
attributes: [
|
||||
"user_id",
|
||||
"username",
|
||||
"store_id",
|
||||
"language",
|
||||
"analytics_enabled",
|
||||
],
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
|
@ -307,3 +315,66 @@ export async function IsAccountNameAvailable(req: Request, res: Response) {
|
|||
res.status(500).send({ err: "invalid request" });
|
||||
}
|
||||
}
|
||||
|
||||
export async function GetUserProfileSettings(req: Request, res: Response) {
|
||||
try {
|
||||
const session = await getUserSession(req);
|
||||
|
||||
if (!session) {
|
||||
return res.status(401).send({ err: "unauthorized" });
|
||||
}
|
||||
|
||||
const user = await User.findOne({
|
||||
where: {
|
||||
user_id: session.user_id,
|
||||
},
|
||||
attributes: ["language", "analytics_enabled"],
|
||||
});
|
||||
|
||||
res.status(200).json(user);
|
||||
} catch (error) {
|
||||
logger.error(error);
|
||||
res.status(500).send({ err: "invalid request" });
|
||||
}
|
||||
}
|
||||
|
||||
export async function UpdateUserProfileSettings(req: Request, res: Response) {
|
||||
try {
|
||||
const { language, analyticsEnabled } = req.body;
|
||||
|
||||
if (!language && analyticsEnabled === undefined) {
|
||||
return res.status(400).send({ err: "invalid request" });
|
||||
}
|
||||
|
||||
const session = await getUserSession(req);
|
||||
|
||||
if (!session) {
|
||||
return res.status(401).send({ err: "unauthorized" });
|
||||
}
|
||||
|
||||
const user = await User.findOne({
|
||||
where: {
|
||||
user_id: session.user_id,
|
||||
},
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
return res.status(401).send({ err: "unauthorized" });
|
||||
}
|
||||
|
||||
if (language) {
|
||||
user.language = language;
|
||||
}
|
||||
|
||||
if (analyticsEnabled !== undefined) {
|
||||
user.analytics_enabled = analyticsEnabled;
|
||||
}
|
||||
|
||||
await user.save();
|
||||
|
||||
res.status(200).send({ msg: "user profile settings updated" });
|
||||
} catch (error) {
|
||||
logger.error(error);
|
||||
res.status(500).send({ err: "invalid request" });
|
||||
}
|
||||
}
|
||||
|
|
|
@ -111,6 +111,8 @@ export async function AddEmployee(req: Request, res: Response) {
|
|||
password: hashedPassword,
|
||||
calendar_max_future_booking_days: calendarMaxFutureBookingDays,
|
||||
calendar_min_earliest_booking_time: calendarMinEarliestBookingTime,
|
||||
language: "en", // TODO: get language from request
|
||||
analytics_enabled: true,
|
||||
})
|
||||
.then(() => res.status(200).send({ msg: "success" }))
|
||||
.catch((err) => {
|
||||
|
|
|
@ -11,8 +11,9 @@ interface UserAttributes {
|
|||
password: string;
|
||||
calendar_max_future_booking_days?: number;
|
||||
calendar_min_earliest_booking_time?: number;
|
||||
calendar_primary_calendar_id?: string;
|
||||
calendar_using_primary_calendar?: boolean;
|
||||
language: string;
|
||||
analytics_enabled: boolean;
|
||||
}
|
||||
|
||||
class User extends Model<UserAttributes> implements UserAttributes {
|
||||
|
@ -24,8 +25,9 @@ class User extends Model<UserAttributes> implements UserAttributes {
|
|||
declare password: string;
|
||||
declare calendar_max_future_booking_days: number;
|
||||
declare calendar_min_earliest_booking_time: number;
|
||||
declare calendar_primary_calendar_id: string;
|
||||
declare calendar_using_primary_calendar: boolean;
|
||||
declare language: string;
|
||||
declare analytics_enabled: boolean;
|
||||
}
|
||||
|
||||
User.init(
|
||||
|
@ -64,14 +66,18 @@ User.init(
|
|||
type: DataTypes.INTEGER,
|
||||
// allowNull defaults to true
|
||||
},
|
||||
calendar_primary_calendar_id: {
|
||||
type: DataTypes.STRING,
|
||||
// allowNull defaults to true
|
||||
},
|
||||
calendar_using_primary_calendar: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
// allowNull defaults to true
|
||||
},
|
||||
language: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
analytics_enabled: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
allowNull: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
tableName: "users",
|
||||
|
|
|
@ -9,5 +9,15 @@ router.post("/auth/login", userController.Login);
|
|||
router.delete("/auth/logout", sessionProtection, userController.Logout);
|
||||
router.get("/", sessionProtection, userController.GetUser);
|
||||
router.post("/auth/check/accountname", userController.IsAccountNameAvailable);
|
||||
router.get(
|
||||
"/profile/settings",
|
||||
sessionProtection,
|
||||
userController.GetUserProfileSettings
|
||||
);
|
||||
router.post(
|
||||
"/profile/settings",
|
||||
sessionProtection,
|
||||
userController.UpdateUserProfileSettings
|
||||
);
|
||||
|
||||
export default router;
|
||||
|
|
Loading…
Reference in New Issue