1
0
Fork 0
mirror of https://github.com/hedgedoc/hedgedoc.git synced 2025-04-14 09:24:57 +00:00

refactor(auth-token): lazy-load relations

Signed-off-by: David Mehren <git@herrmehren.de>
This commit is contained in:
David Mehren 2021-11-16 18:39:52 +01:00
parent 6a56599c8a
commit 552d06f182
No known key found for this signature in database
GPG key ID: 185982BA4C42B7C3
3 changed files with 15 additions and 11 deletions

View file

@ -24,7 +24,7 @@ export class AuthToken {
@ManyToOne((_) => User, (user) => user.authTokens, {
onDelete: 'CASCADE', // This deletes the AuthToken, when the associated User is deleted
})
user: User;
user: Promise<User>;
@Column()
label: string;
@ -53,7 +53,7 @@ export class AuthToken {
): Omit<AuthToken, 'id' | 'createdAt'> {
const newToken = new AuthToken();
newToken.keyId = keyId;
newToken.user = user;
newToken.user = Promise.resolve(user);
newToken.label = label;
newToken.accessTokenHash = accessToken;
newToken.validUntil = validUntil;

View file

@ -89,7 +89,7 @@ describe('AuthService', () => {
const accessTokenHash = await hashPassword(token);
jest.spyOn(authTokenRepo, 'findOne').mockResolvedValueOnce({
...authToken,
user: user,
user: Promise.resolve(user),
accessTokenHash: accessTokenHash,
});
const authTokenFromCall = await service.getAuthTokenAndValidate(
@ -98,7 +98,7 @@ describe('AuthService', () => {
);
expect(authTokenFromCall).toEqual({
...authToken,
user: user,
user: Promise.resolve(user),
accessTokenHash: accessTokenHash,
});
});
@ -112,7 +112,7 @@ describe('AuthService', () => {
it('AuthToken has wrong hash', async () => {
jest.spyOn(authTokenRepo, 'findOne').mockResolvedValueOnce({
...authToken,
user: user,
user: Promise.resolve(user),
accessTokenHash: 'the wrong hash',
});
await expect(
@ -123,7 +123,7 @@ describe('AuthService', () => {
const accessTokenHash = await hashPassword(token);
jest.spyOn(authTokenRepo, 'findOne').mockResolvedValueOnce({
...authToken,
user: user,
user: Promise.resolve(user),
accessTokenHash: accessTokenHash,
validUntil: new Date(1549312452000),
});
@ -138,7 +138,7 @@ describe('AuthService', () => {
it('works', async () => {
jest.spyOn(authTokenRepo, 'findOne').mockResolvedValueOnce({
...authToken,
user: user,
user: Promise.resolve(user),
lastUsed: new Date(1549312452000),
});
jest
@ -170,7 +170,7 @@ describe('AuthService', () => {
});
jest.spyOn(authTokenRepo, 'findOne').mockResolvedValue({
...authToken,
user: user,
user: Promise.resolve(user),
accessTokenHash: accessTokenHash,
});
jest
@ -204,14 +204,14 @@ describe('AuthService', () => {
it('works', async () => {
jest.spyOn(authTokenRepo, 'findOne').mockResolvedValue({
...authToken,
user: user,
user: Promise.resolve(user),
});
jest
.spyOn(authTokenRepo, 'remove')
.mockImplementationOnce(async (token, __): Promise<AuthToken> => {
expect(token).toEqual({
...authToken,
user: user,
user: Promise.resolve(user),
});
return authToken;
});

View file

@ -53,7 +53,11 @@ export class AuthService {
}
const accessToken = await this.getAuthTokenAndValidate(keyId, secret);
await this.setLastUsedToken(keyId);
return await this.usersService.getUserByUsername(accessToken.user.username);
return await this.usersService.getUserByUsername(
(
await accessToken.user
).username,
);
}
async createTokenForUser(