import Addon from "../addon"; import { AddonOptions, ApplicationInstanceInterface, ApplicationInterface, Operation, ResourceAttributes } from "../types"; import User from "../resources/user"; import JsonApiUserProcessor from "../processors/user-processor"; import JsonApiSessionProcessor from "../processors/session-processor"; export type UserManagementAddonOptions = AddonOptions & { userResource: typeof User; userProcessor?: typeof JsonApiUserProcessor; sessionProcessor?: typeof JsonApiSessionProcessor; userEncryptPasswordCallback?: (op: Operation) => Promise; userLoginCallback?: (op: Operation, userDataSource: ResourceAttributes) => Promise; userGenerateIdCallback?: () => Promise; userRolesProvider?: (this: ApplicationInstanceInterface, user: User) => Promise; userPermissionsProvider?: (this: ApplicationInstanceInterface, user: User) => Promise; usernameRequestParameter?: string; passwordRequestParameter?: string; jwtClaimForUserID?: string; includeTokenInIdentifyOpDataPayload?: boolean; }; export default class UserManagementAddon extends Addon { readonly app: ApplicationInterface; readonly options: UserManagementAddonOptions; constructor(app: ApplicationInterface, options?: UserManagementAddonOptions); install(): Promise; private createUserProcessor; private createSessionProcessor; private createSessionResource; }