unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
97 lines • 4.48 kB
TypeScript
import type { URL } from 'url';
import { type IAuditUser, type IUser, type IUserWithRootRole } from '../types/user.js';
import type { AccessService } from './access-service.js';
import type ResetTokenService from './reset-token-service.js';
import type { EmailService } from './email-service.js';
import type { IAuthOption, IUnleashConfig, UsernameAdminUser } from '../types/option.js';
import type SessionService from './session-service.js';
import type { IUnleashStores } from '../types/stores.js';
import { RoleName } from '../types/model.js';
import type SettingService from './setting-service.js';
import type { TokenUserSchema } from '../openapi/index.js';
import type EventService from '../features/events/event-service.js';
export interface ICreateUserWithRole {
name?: string;
email?: string;
username?: string;
password?: string;
rootRole: number | RoleName;
}
export interface IUpdateUser {
id: number;
name?: string;
email?: string;
rootRole?: number | RoleName;
}
export interface ILoginUserRequest {
email: string;
name?: string;
rootRole?: number | RoleName;
autoCreate?: boolean;
}
export declare class UserService {
private logger;
private store;
private eventService;
private eventBus;
private accessService;
private resetTokenService;
private sessionService;
private emailService;
private settingService;
private flagResolver;
private passwordResetTimeouts;
private baseUriPath;
readonly unleashUrl: string;
readonly maxParallelSessions: number;
constructor(stores: Pick<IUnleashStores, 'userStore'>, { server, getLogger, eventBus, flagResolver, session, }: Pick<IUnleashConfig, 'getLogger' | 'server' | 'eventBus' | 'flagResolver' | 'session'>, services: {
accessService: AccessService;
resetTokenService: ResetTokenService;
emailService: EmailService;
eventService: EventService;
sessionService: SessionService;
settingService: SettingService;
});
validatePassword(password: string): boolean;
initAdminUser({ createAdminUser, initialAdminUser, }: Pick<IAuthOption, 'createAdminUser' | 'initialAdminUser'>): Promise<void>;
initAdminUsernameUser(usernameAdminUser?: UsernameAdminUser): Promise<void>;
getAll(): Promise<IUserWithRootRole[]>;
getUser(id: number): Promise<IUserWithRootRole>;
search(query: string): Promise<IUser[]>;
getByEmail(email: string): Promise<IUser>;
private validateEmail;
createUser({ username, email, name, password, rootRole }: ICreateUserWithRole, auditUser?: IAuditUser): Promise<IUserWithRootRole>;
newUserInviteLink({ id: userId }: Pick<IUserWithRootRole, 'id'>, auditUser?: IAuditUser): Promise<string>;
sendWelcomeEmail(user: IUserWithRootRole, inviteLink: string): Promise<boolean>;
updateUser({ id, name, email, rootRole }: IUpdateUser, auditUser: IAuditUser): Promise<IUserWithRootRole>;
deleteUser(userId: number, auditUser: IAuditUser): Promise<void>;
deleteScimUsers(auditUser: IAuditUser): Promise<void>;
loginUser(usernameOrEmail: string, password: string, device?: {
userAgent?: string;
ip: string;
}): Promise<IUser>;
/**
* Used to login users without specifying password. Used when integrating
* with external identity providers.
*
* @param usernameOrEmail
* @param autoCreateUser
* @returns
*/
loginUserWithoutPassword(email: string, autoCreateUser?: boolean): Promise<IUser>;
loginUserSSO({ email, name, rootRole, autoCreate, }: ILoginUserRequest): Promise<IUser>;
loginDemoAuthDefaultAdmin(): Promise<IUser>;
changePassword(userId: number, password: string): Promise<void>;
changePasswordWithPreviouslyUsedPasswordCheck(userId: number, password: string): Promise<void>;
changePasswordWithVerification(userId: number, newPassword: string, oldPassword: string): Promise<void>;
getUserForToken(token: string): Promise<TokenUserSchema>;
/**
* If the password is a strong password will update password and delete all sessions for the user we're changing the password for
* @param token - the token authenticating this request
* @param password - new password
*/
resetPassword(token: string, password: string): Promise<void>;
createResetPasswordEmail(receiverEmail: string, user?: IUser): Promise<URL>;
}
export default UserService;
//# sourceMappingURL=user-service.d.ts.map