forked from Yara724/api
32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose";
|
|
import { HydratedDocument } from "mongoose";
|
|
import type { FanavaranClientKey } from "src/core/config/fanavaran-client.config";
|
|
|
|
/**
|
|
* Shared Fanavaran authenticationToken per tenant.
|
|
* Survives process restarts / multi-instance so we do not Login on every request.
|
|
*/
|
|
@Schema({ collection: "fanavaranAuthTokens", timestamps: true })
|
|
export class FanavaranAuthToken {
|
|
@Prop({ type: String, required: true, unique: true, index: true })
|
|
clientKey: FanavaranClientKey;
|
|
|
|
@Prop({ type: String, required: true })
|
|
authenticationToken: string;
|
|
|
|
/**
|
|
* Fingerprint of auth config used when this token was minted
|
|
* (appName/secret/user/pass/corp/contract/location). Mismatch → re-login.
|
|
*/
|
|
@Prop({ type: String, required: false })
|
|
authFingerprint?: string;
|
|
|
|
/** When this token should be refreshed (Asia/Tehran midnight). */
|
|
@Prop({ type: Date, required: true, index: true })
|
|
expiresAt: Date;
|
|
}
|
|
|
|
export type FanavaranAuthTokenDocument = HydratedDocument<FanavaranAuthToken>;
|
|
export const FanavaranAuthTokenSchema =
|
|
SchemaFactory.createForClass(FanavaranAuthToken);
|