|
@@ -20,12 +20,32 @@ class SessionService {
|
|
|
// }
|
|
|
|
|
|
//
|
|
|
- getUserFromReq(req: Request) {
|
|
|
+ getUserFromReq(req: Request): {
|
|
|
+ userId: string;
|
|
|
+ email: string;
|
|
|
+ };
|
|
|
+ getUserFromReq(
|
|
|
+ req: Request,
|
|
|
+ isRequired: false,
|
|
|
+ ): {
|
|
|
+ userId: string;
|
|
|
+ email: string;
|
|
|
+ } | null;
|
|
|
+ /**
|
|
|
+ * Получает данные пользователя из запроса (req.user).
|
|
|
+ * @param req - запрос
|
|
|
+ * @param isRequired - если не указано, то выбрасывает ошибку, если пользователь не авторизован
|
|
|
+ * @returns данные пользователя, если пользователь авторизован, иначе null
|
|
|
+ */
|
|
|
+ getUserFromReq(req: Request, isRequired: boolean = true) {
|
|
|
const userData = TokenPayload.safeParse(req.user);
|
|
|
|
|
|
- if (!userData.success) {
|
|
|
+ if (!userData.success && isRequired) {
|
|
|
throw ApiError.UnauthorizedError();
|
|
|
}
|
|
|
+ if (!userData.success && !isRequired) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
return userData.data;
|
|
|
}
|
|
|
|