icynet-auth-server/src/modules/features/oauth2/adapter/user.adapter.ts

58 lines
1.5 KiB
TypeScript

import { OAuth2UserAdapter, OAuth2User } from '@icynet/oauth2-provider';
import { OAuth2Service } from '../oauth2.service';
import { Request } from 'express';
import { ParamsDictionary } from 'express-serve-static-core';
import { ParsedQs } from 'qs';
export class UserAdapter implements OAuth2UserAdapter {
constructor(private _service: OAuth2Service) {}
getId(user: OAuth2User): number {
return user.id as number;
}
async fetchById(id: number): Promise<OAuth2User> {
const find = await this._service.userService.getById(id);
return {
id: find.id,
username: find.username,
password: find.password,
};
}
async fetchByUsername(username: string): Promise<OAuth2User> {
const find = await this._service.userService.getByUsername(username);
return {
id: find.id,
username: find.username,
password: find.password,
};
}
checkPassword(user: OAuth2User, password: string): Promise<boolean> {
return this._service.userService.comparePasswords(user.password, password);
}
async fetchFromRequest(
req: Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>,
): Promise<OAuth2User> {
return req.session.user;
}
async consented(
userId: number,
clientId: string,
scope: string | string[],
): Promise<boolean> {
return false;
}
async consent(
userId: number,
clientId: string,
scope: string | string[],
): Promise<boolean> {
return true;
}
}