lbx-jwt
Version:
Provides JWT authentication for loopback applications. Includes storing roles inside tokens and handling refreshing. Built-in reuse detection.
31 lines (28 loc) • 1.74 kB
text/typescript
import { Getter, inject } from '@loopback/core';
import { DefaultCrudRepository, HasManyRepositoryFactory, HasOneRepositoryFactory, juggler, repository } from '@loopback/repository';
import { BiometricCredentialsRepository } from './biometric-credentials.repository';
import { CredentialsRepository } from './credentials.repository';
import { LbxJwtBindings } from '../keys';
import { BaseUser, Credentials, BaseUserRelations, BiometricCredentials } from '../models';
export class BaseUserRepository<RoleType extends string> extends DefaultCrudRepository<
BaseUser<RoleType>,
typeof BaseUser.prototype.id,
BaseUserRelations
> {
readonly credentials: HasOneRepositoryFactory<Credentials, typeof BaseUser.prototype.id>;
readonly biometricCredentials: HasManyRepositoryFactory<BiometricCredentials, typeof BaseUser.prototype.id>;
constructor(
(LbxJwtBindings.DATASOURCE_KEY)
dataSource: juggler.DataSource,
.getter('CredentialsRepository')
protected credentialsRepositoryGetter: Getter<CredentialsRepository>,
.getter('BiometricCredentialsRepository')
protected biometricCredentialsRepositoryGetter: Getter<BiometricCredentialsRepository>
) {
super(BaseUser, dataSource);
this.credentials = this.createHasOneRepositoryFactoryFor('credentials', credentialsRepositoryGetter);
this.registerInclusionResolver('credentials', this.credentials.inclusionResolver);
this.biometricCredentials = this.createHasManyRepositoryFactoryFor('biometricCredentials', biometricCredentialsRepositoryGetter);
this.registerInclusionResolver('biometricCredentials', this.biometricCredentials.inclusionResolver);
}
}