UNPKG

@lomray/microservice-users

Version:

Users microservice based on NodeJS & inverted json.

114 lines (113 loc) 3.2 kB
import { EntityManager, ObjectLiteral, Repository } from 'typeorm'; import IdProvider from "../../constants/id-provider.js"; import IdentityProvider from "../../entities/identity-provider.js"; import Profile from "../../entities/profile.js"; import User from "../../entities/user.js"; import UserRepository from "../../repositories/user.js"; interface ISingInReturn { user: User; isNew: boolean; } /** * isDenyRegister - prevent sign in if user exist * isDenyAuthViaRegister - prevent sign in if user exist (split sign up/sign in) */ type TSingInParams = { isDenyRegister?: boolean; isDenyAuthViaRegister?: boolean; isShouldAttachUserPhoto?: boolean; isShouldApproveProvider?: boolean; } & Record<string, any>; /** * Abstract class for identity providers */ declare abstract class Abstract { /** * Is should attach user photo */ protected isShouldAttachUserPhoto: boolean; /** * Is approve provider (prevent overriding for account) */ protected isShouldApproveProvider: boolean; /** * @protected */ protected readonly token: string; /** * @protected */ protected readonly provider: IdProvider; /** * @protected */ protected readonly userRepository: UserRepository; /** * @protected */ protected readonly providerRepository: Repository<IdentityProvider>; /** * @protected */ protected readonly profileRepository: Repository<Profile>; /** * @protected */ protected readonly manager: EntityManager; /** * @constructor */ /** * @constructor */ constructor(provider: IdProvider, token: string, manager: EntityManager); /** * Sign in user */ /** * Sign in user */ abstract signIn(params?: TSingInParams): Promise<ISingInReturn>; /** * Attach new identity provider to existing user */ /** * Attach new identity provider to existing user */ abstract attachProvider(userId: string, params?: Record<string, any>): Promise<User>; /** * Returns user from db by identity token */ /** * Returns user from db by identity token */ abstract getUserByToken(): Promise<User>; /** * Validate entities * @private */ /** * Validate entities * @private */ protected validateEntities(entitiesObj: (ObjectLiteral | undefined)[]): Promise<void>; /** * Create user and add related identity provider, update user profile * @protected */ /** * Create user and add related identity provider, update user profile * @protected */ protected createUser(entityUser: User, entityIdentityProvider: IdentityProvider, entityProfile?: Profile): Promise<User>; /** * Add new identity provider to existing user and update: profile, user * @protected */ /** * Add new identity provider to existing user and update: profile, user * @protected */ protected assign(entityIdentityProvider: IdentityProvider, user: User, profile?: Profile): Promise<User>; } export { Abstract as default, ISingInReturn, TSingInParams };