mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-20 18:25:21 -04:00
feat(knex): create database interfaces and knexjs nest integration
Co-authored-by: Philip Molares <philip.molares@udo.edu> Signed-off-by: Philip Molares <philip.molares@udo.edu> Signed-off-by: Erik Michelson <github@erik.michelson.eu>
This commit is contained in:
parent
902abf72e6
commit
a9183e82bf
93 changed files with 760 additions and 2927 deletions
|
@ -1,63 +0,0 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2024 The HedgeDoc developers (see AUTHORS file)
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
ManyToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
} from 'typeorm';
|
||||
|
||||
import { User } from '../users/user.entity';
|
||||
|
||||
@Entity()
|
||||
export class ApiToken {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@Column({ unique: true })
|
||||
keyId: string;
|
||||
|
||||
@ManyToOne((_) => User, (user) => user.apiTokens, {
|
||||
onDelete: 'CASCADE', // This deletes the PublicAuthToken, when the associated User is deleted
|
||||
})
|
||||
user: Promise<User>;
|
||||
|
||||
@Column()
|
||||
label: string;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@Column({ unique: true })
|
||||
hash: string;
|
||||
|
||||
@Column()
|
||||
validUntil: Date;
|
||||
|
||||
@Column({
|
||||
nullable: true,
|
||||
type: 'date',
|
||||
})
|
||||
lastUsedAt: Date | null;
|
||||
|
||||
public static create(
|
||||
keyId: string,
|
||||
user: User,
|
||||
label: string,
|
||||
tokenString: string,
|
||||
validUntil: Date,
|
||||
): Omit<ApiToken, 'id' | 'createdAt'> {
|
||||
const token = new ApiToken();
|
||||
token.keyId = keyId;
|
||||
token.user = Promise.resolve(user);
|
||||
token.label = label;
|
||||
token.hash = tokenString;
|
||||
token.validUntil = validUntil;
|
||||
token.lastUsedAt = null;
|
||||
return token;
|
||||
}
|
||||
}
|
|
@ -12,6 +12,7 @@ import { Repository } from 'typeorm';
|
|||
import { Identity } from '../auth/identity.entity';
|
||||
import appConfigMock from '../config/mock/app.config.mock';
|
||||
import authConfigMock from '../config/mock/auth.config.mock';
|
||||
import { User } from '../database/user.entity';
|
||||
import {
|
||||
NotInDBError,
|
||||
TokenNotValidError,
|
||||
|
@ -19,7 +20,6 @@ import {
|
|||
} from '../errors/errors';
|
||||
import { LoggerModule } from '../logger/logger.module';
|
||||
import { Session } from '../sessions/session.entity';
|
||||
import { User } from '../users/user.entity';
|
||||
import { UsersModule } from '../users/users.module';
|
||||
import { ApiToken } from './api-token.entity';
|
||||
import { ApiTokenService } from './api-token.service';
|
||||
|
|
|
@ -10,13 +10,13 @@ import { InjectRepository } from '@nestjs/typeorm';
|
|||
import { createHash, randomBytes, timingSafeEqual } from 'crypto';
|
||||
import { Repository } from 'typeorm';
|
||||
|
||||
import { User } from '../database/user.entity';
|
||||
import {
|
||||
NotInDBError,
|
||||
TokenNotValidError,
|
||||
TooManyTokensError,
|
||||
} from '../errors/errors';
|
||||
import { ConsoleLoggerService } from '../logger/console-logger.service';
|
||||
import { User } from '../users/user.entity';
|
||||
import { bufferToBase64Url } from '../utils/password';
|
||||
import { ApiToken } from './api-token.entity';
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
import { ExecutionContext, Injectable } from '@nestjs/common';
|
||||
|
||||
import { CompleteRequest } from '../api/utils/request.type';
|
||||
import { User } from '../users/user.entity';
|
||||
import { User } from '../database/user.entity';
|
||||
import { UsersService } from '../users/users.service';
|
||||
|
||||
@Injectable()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue