Pass session to auth methods
This commit is contained in:
parent
9b7ec1e516
commit
faeafbd68d
@ -2,9 +2,10 @@ import AuthProof from "./AuthProof";
|
||||
import MysqlConnectionManager from "../db/MysqlConnectionManager";
|
||||
import User from "./models/User";
|
||||
import UserEmail from "./models/UserEmail";
|
||||
import {Connection} from "mysql";
|
||||
|
||||
export default abstract class AuthGuard<P extends AuthProof> {
|
||||
public abstract async getProofForSession(sessionID: string): Promise<P | null>;
|
||||
public abstract async getProofForSession(session: Express.Session): Promise<P | null>;
|
||||
|
||||
public async getUserForSession(session: Express.Session): Promise<User | null> {
|
||||
if (!await this.isAuthenticated(session)) return null;
|
||||
@ -52,9 +53,9 @@ export default abstract class AuthGuard<P extends AuthProof> {
|
||||
}
|
||||
|
||||
public async logout(session: Express.Session): Promise<void> {
|
||||
const proof = await this.getProofForSession(session.id);
|
||||
const proof = await this.getProofForSession(session);
|
||||
if (proof) {
|
||||
await proof.revoke();
|
||||
await proof.revoke(session);
|
||||
}
|
||||
session.auth_id = undefined;
|
||||
}
|
||||
@ -62,7 +63,7 @@ export default abstract class AuthGuard<P extends AuthProof> {
|
||||
private async checkCurrentSessionProofValidity(session: Express.Session): Promise<boolean> {
|
||||
if (typeof session.auth_id !== 'number') return false;
|
||||
|
||||
const proof = await this.getProofForSession(session.id);
|
||||
const proof = await this.getProofForSession(session);
|
||||
|
||||
if (!proof || !await proof.isValid() || !await proof.isAuthorized() || !await proof.isOwnedBy(session.auth_id)) {
|
||||
await this.logout(session);
|
||||
|
@ -11,5 +11,5 @@ export default interface AuthProof {
|
||||
|
||||
getEmail(): Promise<string>;
|
||||
|
||||
revoke(): Promise<void>;
|
||||
revoke(session: Express.Session): Promise<void>;
|
||||
}
|
Loading…
Reference in New Issue
Block a user