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 User from "../models/user";
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
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" });
}
}
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);
axios
.post(process.env.TERMIN_PLANNER_URL as string, {
userId: userSession.user_id,
accessToken: accessToken,
refreshToken: refreshToken,
sub: sub,
pass: process.env.TERMIN_PLANNER_AUTHORIZATION_PASSWORD as string,
})
.post(
`${process.env.TERMIN_PLANNER_URL}/addGoogleAccount` as string,
{
userId: userSession.user_id,
accessToken: accessToken,
refreshToken: refreshToken,
sub: sub,
pass: process.env.TERMIN_PLANNER_AUTHORIZATION_PASSWORD as string,
}
)
.then((response) => {
logger.info("response %s", response.data);
})
@ -80,12 +83,6 @@ router.get(
});
// /api/v1/addGoogleAccount
/*
user_id
refresh_token
pass
*/
}
);
@ -96,5 +93,9 @@ router.post(
calendarController.UpdatePersonalCalendarSettings
);
router.post("/settings/store", calendarController.UpdateStoreCalendarSettings);
router.post(
"/settings/personal/unlink",
calendarController.UnlinkGoogleCalendar
);
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_MAX = 10000000;
export const STORE_SERVICE_ACTIVITY_DURATION_HOURS_MAX = 23;
export const STORE_SERVICE_ACTIVITY_DURATION_MINUTES_MAX = 60;
export const STORE_SERVICE_ACTIVITY_DURATION_MINUTES_MAX = 24 * 60; // 1440 minutes = 24 hours
export const STORE_SERVICE_ACTIVITY_DURATION_MIN = 0;
export const STORE_SERVICE_ACTIVITY_DURATION_MAX =
STORE_SERVICE_ACTIVITY_DURATION_HOURS_MAX * 60 +
STORE_SERVICE_ACTIVITY_DURATION_MINUTES_MAX;
export const CALENDAR_MAX_FUTURE_BOOKING_DAYS = 14;