auth-vir - v3.1.0
    Preparing search index...

    Class BackendAuthClient<DatabaseUser, UserId, AssumedUserParams>

    An auth client for creating and validating JWTs embedded in cookies. This should only be used in a backend environment as it accesses native Node packages.

    Type Parameters

    • DatabaseUser extends AnyObject
    • UserId extends string | number
    • AssumedUserParams extends AnyObject = EmptyObject
    Index

    Constructors

    Properties

    cachedParsedJwtKeys: Record<string, Readonly<JwtKeys>> = {}

    Methods

    • Creates a 'cookie-set' header to refresh the user's session cookie.

      Parameters

      • __namedParameters: {
            requestHeaders: IncomingHttpHeaders;
            userIdResult: Readonly<UserIdResult<UserId>>;
        }

      Returns Promise<OutgoingHttpHeaders | undefined>

    • Use these headers to log a user in.

      Parameters

      • __namedParameters: { isSignUpCookie: boolean; requestHeaders: IncomingHttpHeaders; userId: UserId }

      Returns Promise<OutgoingHttpHeaders>

    • Use these headers to log out the user.

      Parameters

      • params: Readonly<
            _RequireExactlyOne<
                { allCookies: true; isSignUpCookie: boolean },
                "allCookies" | "isSignUpCookie",
            > & { serviceOrigin?: string },
        >

      Returns Promise<Record<string, string | string[]> & { "set-cookie": string[] }>

    • Reads the user's assumed user headers and, if configured, gets the assumed user.

      Parameters

      • __namedParameters: { requestHeaders: IncomingHttpHeaders; user: DatabaseUser }

      Returns Promise<DatabaseUser | undefined>

    • Get all the parameters used for cookie generation.

      Parameters

      • __namedParameters: {
            isSignUpCookie: boolean;
            requestHeaders: Readonly<IncomingHttpHeaders> | undefined;
        }
        • isSignUpCookie: boolean

          Set this to true when we are setting the initial cookie right after a user signs up. This allows them to auto-authorize when they verify their email address.

          This should only be set to true when a new user is signing up.

        • requestHeaders: Readonly<IncomingHttpHeaders> | undefined

      Returns Promise<Readonly<CookieParams>>

    • Calls the provided getUserFromDatabase config.

      Parameters

      • __namedParameters: {
            assumingUser: AssumedUserParams | undefined;
            isSignUpCookie: boolean;
            requestHeaders: IncomingHttpHeaders;
            userId: UserId | undefined;
        }

      Returns Promise<DatabaseUser | undefined>

    • Combines .getInsecureUser() and .getSecureUser() into one method.

      Parameters

      • params: {
            allowUserAuthRefresh: boolean;
            isSignUpCookie: boolean;
            requestHeaders: IncomingHttpHeaders;
            serviceOrigin?: string;
        }
        • allowUserAuthRefresh: boolean

          If true, this method will generate headers to refresh the user's auth session. This should likely only be done with a specific endpoint, like whatever endpoint you trigger with the frontend auth client's checkUser.performCheck callback.

        • isSignUpCookie: boolean
        • requestHeaders: IncomingHttpHeaders
        • OptionalserviceOrigin?: string

          Overrides the client's already established serviceOrigin.

      Returns Promise<
          _RequireOneOrNone<
              {
                  insecureUser: GetUserResult<DatabaseUser>;
                  secureUser: GetUserResult<DatabaseUser>;
              },
              "secureUser"
              | "insecureUser",
          >,
      >

    • Parameters

      • __namedParameters: { allowUserAuthRefresh: boolean; requestHeaders: IncomingHttpHeaders }
        • allowUserAuthRefresh: boolean

          If true, this method will generate headers to refresh the user's auth session. This should likely only be done with a specific endpoint, like whatever endpoint you trigger with the frontend auth client's checkUser.performCheck callback.

        • requestHeaders: IncomingHttpHeaders

      Returns Promise<GetUserResult<DatabaseUser> | undefined>

      This only half authenticates the user. It should only be used in circumstances where JavaScript cannot be used to attach the CSRF token header to the request (like when opening a PDF file). Use .getSecureUser() instead, whenever possible.

    • Get all the JWT params used when creating the auth cookie, in case you need them for something else too.

      Returns Promise<
          Readonly<CreateJwtParams> & Readonly<
              Pick<CreateJwtParams, "issuer" | "audience" | "jwtKeys">,
          > & PartialWithUndefined<{ allowedClockSkew: Readonly<AnyDuration> }>,
      >

    • Securely extract a user from their request headers.

      Parameters

      • __namedParameters: {
            allowUserAuthRefresh: boolean;
            isSignUpCookie: boolean;
            requestHeaders: IncomingHttpHeaders;
        }
        • allowUserAuthRefresh: boolean

          If true, this method will generate headers to refresh the user's auth session. This should likely only be done with a specific endpoint, like whatever endpoint you trigger with the frontend auth client's checkUser.performCheck callback.

        • isSignUpCookie: boolean
        • requestHeaders: IncomingHttpHeaders

      Returns Promise<GetUserResult<DatabaseUser> | undefined>

    • Conditionally logs a message if logging is enabled for the given user context.

      Parameters

      • params: {
            assumedUserParams: AssumedUserParams | undefined;
            user: DatabaseUser | undefined;
            userId: UserId | undefined;
        }
      • message: string
      • Optionalextra: Record<string, unknown>

      Returns void