import { User } from '@/models/user.ts'; import http from 'http'; import * as cookie from '@kevisual/router/src/server/cookie.ts'; import { logger } from './logger.ts'; export const error = (msg: string, code = 500) => { return JSON.stringify({ code, message: msg }); }; export const getTokenFromRequest = (req: http.IncomingMessage) => { let token = (req.headers?.['authorization'] as string) || (req.headers?.['Authorization'] as string) || ''; const url = new URL(req.url || '', 'http://localhost'); if (!token) { token = url.searchParams.get('token') || ''; } if (!token) { const parsedCookies = cookie.parse(req.headers.cookie || ''); token = parsedCookies.token || ''; } if (token) { token = token.replace('Bearer ', ''); } return token; } // export const checkAuth = async (req: http.IncomingMessage, res: http.ServerResponse) => { // const token = getTokenFromRequest(req); // const resNoPermission = () => { // res.statusCode = 401; // res.end(error('Invalid authorization')); // return { tokenUser: null, token: null }; // }; // if (!token) { // return resNoPermission(); // } // let tokenUser; // try { // tokenUser = await User.verifyToken(token); // } catch (e) { // console.log('checkAuth error', e); // res.statusCode = 401; // res.end(error('Invalid token')); // return { tokenUser: null, token: null }; // } // return { tokenUser, token }; // }; export const getLoginUserByToken = async (token: string) => { if (token) { token = token.replace('Bearer ', ''); } if (!token) { return null; } let tokenUser; try { tokenUser = await User.verifyToken(token); return { tokenUser, token }; } catch (e) { return null; } } export const getLoginUser = async (req: http.IncomingMessage) => { let token = getTokenFromRequest(req); if (!token) { return null; } let tokenUser; logger.debug('getLoginUser', token); try { tokenUser = await User.verifyToken(token); return { tokenUser, token }; } catch (e) { return null; } };