@lomray/microservice-users
Version:
Users microservice based on NodeJS & inverted json.
114 lines (113 loc) • 3.2 kB
TypeScript
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 };