unlink google calendar

main
alex 2024-01-21 12:51:57 +01:00
parent c855308797
commit ebaf828882
3 changed files with 58 additions and 16 deletions

View File

@ -4,6 +4,7 @@ import Store from "../models/store";
import { getUserSession } from "../utils/utils"; import { getUserSession } from "../utils/utils";
import User from "../models/user"; import User from "../models/user";
import UserGoogleTokens from "../models/userGoogleTokens"; import UserGoogleTokens from "../models/userGoogleTokens";
import axios from "axios";
// this request is needed to get the store id after the user has connected his calendar to redirect him back to the calendar page // this request is needed to get the store id after the user has connected his calendar to redirect him back to the calendar page
export async function GetStoreId(req: Request, res: Response) { export async function GetStoreId(req: Request, res: Response) {
@ -236,3 +237,45 @@ export async function UpdateStoreCalendarSettings(req: Request, res: Response) {
res.status(500).send({ err: "invalid request" }); res.status(500).send({ err: "invalid request" });
} }
} }
export async function UnlinkGoogleCalendar(req: Request, res: Response) {
try {
const userSession = await getUserSession(req);
if (!userSession) {
return res.status(401).send({ err: "unauthorized" });
}
// check if the user has the google calendar connected
const userGoogleToken = await UserGoogleTokens.findOne({
where: {
user_id: userSession.user_id,
},
});
if (!userGoogleToken) {
return res.status(401).send({ err: "unauthorized" });
}
axios
.post(`${process.env.TERMIN_PLANNER_URL}/removeGoogleAccount` as string, {
userId: userSession.user_id,
deleteCalendars: false,
pass: process.env.TERMIN_PLANNER_AUTHORIZATION_PASSWORD as string,
})
.then((response) => {
logger.info("response %s", response.data);
res.status(200).send({ msg: "success" });
})
.catch((err) => {
logger.info("err %s", err);
res.status(500).send({ err: "invalid request" });
});
} catch (error) {
logger.error(error);
res.status(500).send({ err: "invalid request" });
}
}

View File

@ -58,13 +58,16 @@ router.get(
logger.info("userSession %s", userSession.user_id); logger.info("userSession %s", userSession.user_id);
axios axios
.post(process.env.TERMIN_PLANNER_URL as string, { .post(
userId: userSession.user_id, `${process.env.TERMIN_PLANNER_URL}/addGoogleAccount` as string,
accessToken: accessToken, {
refreshToken: refreshToken, userId: userSession.user_id,
sub: sub, accessToken: accessToken,
pass: process.env.TERMIN_PLANNER_AUTHORIZATION_PASSWORD as string, refreshToken: refreshToken,
}) sub: sub,
pass: process.env.TERMIN_PLANNER_AUTHORIZATION_PASSWORD as string,
}
)
.then((response) => { .then((response) => {
logger.info("response %s", response.data); logger.info("response %s", response.data);
}) })
@ -80,12 +83,6 @@ router.get(
}); });
// /api/v1/addGoogleAccount // /api/v1/addGoogleAccount
/*
user_id
refresh_token
pass
*/
} }
); );
@ -96,5 +93,9 @@ router.post(
calendarController.UpdatePersonalCalendarSettings calendarController.UpdatePersonalCalendarSettings
); );
router.post("/settings/store", calendarController.UpdateStoreCalendarSettings); router.post("/settings/store", calendarController.UpdateStoreCalendarSettings);
router.post(
"/settings/personal/unlink",
calendarController.UnlinkGoogleCalendar
);
export default router; export default router;

View File

@ -27,11 +27,9 @@ export const STORE_SERVICE_ACTIVITY_DESCRIPTION_MAX_LENGTH = 1024;
export const STORE_SERVICE_ACTIVITY_PRICE_MIN = 0; export const STORE_SERVICE_ACTIVITY_PRICE_MIN = 0;
export const STORE_SERVICE_ACTIVITY_PRICE_MAX = 10000000; export const STORE_SERVICE_ACTIVITY_PRICE_MAX = 10000000;
export const STORE_SERVICE_ACTIVITY_DURATION_HOURS_MAX = 23; export const STORE_SERVICE_ACTIVITY_DURATION_MINUTES_MAX = 24 * 60; // 1440 minutes = 24 hours
export const STORE_SERVICE_ACTIVITY_DURATION_MINUTES_MAX = 60;
export const STORE_SERVICE_ACTIVITY_DURATION_MIN = 0; export const STORE_SERVICE_ACTIVITY_DURATION_MIN = 0;
export const STORE_SERVICE_ACTIVITY_DURATION_MAX = export const STORE_SERVICE_ACTIVITY_DURATION_MAX =
STORE_SERVICE_ACTIVITY_DURATION_HOURS_MAX * 60 +
STORE_SERVICE_ACTIVITY_DURATION_MINUTES_MAX; STORE_SERVICE_ACTIVITY_DURATION_MINUTES_MAX;
export const CALENDAR_MAX_FUTURE_BOOKING_DAYS = 14; export const CALENDAR_MAX_FUTURE_BOOKING_DAYS = 14;