ICS React Native App
1import { sign, verify } from "jsonwebtoken";
2import { User } from "./schema";
3import { JWT_REFRESH_SECRET, JWT_SECRET, TOKEN_EXPIRY_MINUTES } from "./config";
4
5export const generateToken = ({ id, username }: User) =>
6 sign({ id, username }, JWT_SECRET, {
7 expiresIn: `${TOKEN_EXPIRY_MINUTES}m`,
8 });
9
10export const generateRefreshToken = ({ id, username }: User) =>
11 sign({ id, username }, JWT_REFRESH_SECRET, {
12 expiresIn: "7d",
13 });
14
15export const verifyToken = (token: string, secret: string): Promise<User> =>
16 new Promise((resolve, reject) => {
17 verify(token, secret, (err, user) =>
18 err ? reject(err) : resolve(user as User),
19 );
20 });