feat(api): API tokens for authentication

Create and managed simple API tokens for access to the API from external
tools.
This commit is contained in:
Julian Tölle 2023-02-19 16:16:34 +01:00
parent eda89716ef
commit 8f7eebb806
15 changed files with 614 additions and 154 deletions

View file

@ -0,0 +1,24 @@
/* eslint-disable max-classes-per-file */
import { Repository, SelectQueryBuilder } from "typeorm";
import { EntityRepository } from "../database/entity-repository";
import { User } from "../users/user.entity";
import { ApiToken } from "./api-token.entity";
export class ApiTokenScopes extends SelectQueryBuilder<ApiToken> {
/**
* `byUser` scopes the query to ApiTokens created by the user.
* @param currentUser
*/
byUser(currentUser: User): this {
return this.andWhere(`token."userId" = :userID`, {
userID: currentUser.id,
});
}
}
@EntityRepository(ApiToken)
export class ApiTokenRepository extends Repository<ApiToken> {
get scoped(): ApiTokenScopes {
return new ApiTokenScopes(this.createQueryBuilder("token"));
}
}