import { inject, injectable } from "inversify"; import BaseService from "../../service"; import { IHttpClient, IService, IResourceMapper, IOpenIdUserInfoResponse, IFindParams } from "../../interfaces"; import User, { IUser, IUserResource } from "../user"; import * as TYPES from "../../types"; export interface IUserService extends IService { me(options?: IFindParams): Promise; } @injectable() export default class UserService extends BaseService implements IUserService { public resource: string = "user"; @inject("UserResourceMapper") public mapper: IResourceMapper; public url() { return `${this.host}/users`; } public async me(options: IFindParams = {}): Promise { const userInfo = await this.http.fetch( `${process.env.OPENID_HOST}/userinfo`, { ...options, headers: this.headers(), } ); const me = await this.findById(userInfo.sub, options); return me; } }