hedgedoc/src/auth/auth-token.entity.ts
Philip Molares d0b8e4cd36
feat: consolidate entities create
This was done to give better typings to the function signatures of entities `create` methods.
It also ensures that each field that should be set to `null` is set to `null` and doesn't leave that up to the typeorm handlers.

See: #1641
Signed-off-by: Philip Molares <philip.molares@udo.edu>
2021-09-25 11:50:28 +02:00

63 lines
1.2 KiB
TypeScript

/*
* SPDX-FileCopyrightText: 2021 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 AuthToken {
@PrimaryGeneratedColumn()
id: number;
@Column({ unique: true })
keyId: string;
@ManyToOne((_) => User, (user) => user.authTokens, {
onDelete: 'CASCADE', // This deletes the AuthToken, when the associated User is deleted
})
user: User;
@Column()
label: string;
@CreateDateColumn()
createdAt: Date;
@Column({ unique: true })
accessTokenHash: string;
@Column()
validUntil: Date;
@Column({
nullable: true,
type: 'date',
})
lastUsed: Date | null;
public static create(
keyId: string,
user: User,
label: string,
accessToken: string,
validUntil: Date,
): Omit<AuthToken, 'id' | 'createdAt'> {
const newToken = new AuthToken();
newToken.keyId = keyId;
newToken.user = user;
newToken.label = label;
newToken.accessTokenHash = accessToken;
newToken.validUntil = validUntil;
newToken.lastUsed = null;
return newToken;
}
}