UNPKG

@htilssu/wowo

Version:

Module tương tác với ứng dụng e-wallet môn học CNPM-DAPM

55 lines (49 loc) 2.01 kB
import {verify} from "./jwt"; export const baseUrl = "https://sso.htilssu.id.vn"; export class SSO { private baseUrl: string = baseUrl; private readonly serviceId: string; constructor(serviceId: string) { this.serviceId = serviceId; } /** * Xác thực token trả về từ SSO server, và trả về payload chứa thông tin của người dùng nếu token hợp lệ, * nếu token không hợp lệ giá trị trả về sẽ là `null` * @param token token cần xác thực * @returns null nếu token không hợp lệ hoặc payload của token */ public async verify(token: string) { try { return await verify(token) } catch (e) { return null; } } /** * Chuyển hướng tới trang đăng nhập của server SSO với url trả về sau khi đăng nhập * khi server đăng nhập xong sẽ chuyển hướng tới url trả về và kèm theo Token của người dùng từ searchParams * @example * ```js * redirectToLoginPage("http://localhost:3000") * ``` * Sau khi xác thực xong người dùng sẽ được chuyển hướng tới `returnUrl` * `http://localhost:3000?Token=... các dịch vụ liên kết sẽ lấy token từ query params và lưu vào cookie của app` * @param returnUrl sau khi đăng nhập xong server sso sẽ chuyển hướng tới * @param callbackUrl callback sau khi đăng nhập xong sso sẽ gọi tới bằng `POST` method */ public redirectToLogin(returnUrl?: string, callbackUrl?: string) { location.href = `${this.baseUrl}/sign-in?returnUrl=${returnUrl ? returnUrl : location}&serviceId=${this.serviceId}&callbackUrl=${callbackUrl}` } } export type TokenPayload = { id: string role: string firstName: string lastName: string email: string avatar: string phoneNumber: string address: string dob: string gender: boolean }