@julienbenac/ally-gerermesaffaires
Version:
GererMesAffaires driver for AdonisJS Ally
127 lines (117 loc) • 4.56 kB
TypeScript
import { HttpContext } from '@adonisjs/core/http';
import Configure from '@adonisjs/core/commands/configure';
import { Oauth2DriverConfig, LiteralStringUnion, RedirectRequestContract, ApiRequestContract, AllyUserContract } from '@adonisjs/ally/types';
import * as _adonisjs_ally from '@adonisjs/ally';
import { Oauth2Driver } from '@adonisjs/ally';
/**
* @julienbenac/ally-gerermesaffaires
*
* @author Julien Benac <contact@julienbenac.fr>
* @license MIT
*/
declare const stubsRoot: string;
/**
* @julienbenac/ally-gerermesaffaires
*
* @author Julien Benac <contact@julienbenac.fr>
* @license MIT
*/
declare function configure(command: Configure): Promise<void>;
/**
* @julienbenac/ally-gerermesaffaires
*
* @author Julien Benac <contact@julienbenac.fr>
* @license MIT
*/
interface GererMesAffairesDriverConfig extends Oauth2DriverConfig {
env: 'production' | 'sandbox';
scopes?: LiteralStringUnion<GererMesAffairesScopes>[];
}
type GererMesAffairesToken = {
/** The token value. */
token: string;
/** The token type. */
type: 'bearer';
/** The refresh token. */
refreshToken: string;
/** The static time in seconds when the token will expire. */
expiresIn: number;
/** The timestamp at which the token expires. */
expiresAt: Date;
/** The access scope defining the user's permission level. */
scope: 'collaborator' | 'owner';
/** The identification token (JWT format) for session lifecycle. */
idToken: string;
} & Record<string, any>;
type GererMesAffairesScopes = 'openid' | 'collaborator' | 'owner' | 'profile' | 'email' | 'address' | 'phone';
/**
* GererMesAffaires driver to login user via GererMesAffaires.
*/
declare class GererMesAffairesDriver extends Oauth2Driver<GererMesAffairesToken, GererMesAffairesScopes> {
#private;
config: GererMesAffairesDriverConfig;
/**
* The authorization URL for the OAuth provider.
* The user will be redirected to this page to authorize the request.
*/
protected authorizeUrl: string;
/** The URL to hit to get an access token. */
protected accessTokenUrl: string;
/** The URL to hit to get user details. */
protected userInfoUrl: string;
/** The cookie name for storing the CSRF token. */
protected stateCookieName: string;
/**
* The parameter name in which to send the state to the OAuth provider.
* The same input is used to retrieve the state post redirect as well.
*/
protected stateParamName: string;
/** The parameter name from which to fetch the authorization code. */
protected codeParamName: string;
/** The parameter name from which to fetch the error message post redirect. */
protected errorParamName: string;
/** The parameter name for defining the authorization scopes. */
protected scopeParamName: string;
/** The identifier for joining multiple scopes. */
protected scopesSeparator: string;
constructor(ctx: HttpContext, config: GererMesAffairesDriverConfig);
/**
* Configuring the redirect request with defaults.
*/
protected configureRedirectRequest(request: RedirectRequestContract<GererMesAffairesScopes>): void;
/**
* Redirects user for authentication.
*/
redirect(callback?: (request: RedirectRequestContract<GererMesAffairesScopes>) => void): Promise<void>;
/**
* Returns the HTTP request with the authorization header set.
*/
protected getAuthenticatedRequest(url: string, token: string): _adonisjs_ally.ApiRequest;
/**
* Fetches the user details.
*/
protected getUserInfo(token: string, callback?: (request: ApiRequestContract) => void): Promise<Omit<AllyUserContract<GererMesAffairesToken>, 'token'>>;
/**
* Find if the current error message is access denied.
*/
accessDenied(): boolean;
/**
* Returns details of the authorized user.
*/
user(callback?: (request: ApiRequestContract) => void): Promise<AllyUserContract<GererMesAffairesToken>>;
/**
* Finds the user from access token.
*/
userFromToken(token: string, callback?: (request: ApiRequestContract) => void): Promise<AllyUserContract<{
token: string;
type: 'bearer';
}>>;
}
/**
* @julienbenac/ally-gerermesaffaires
*
* @author Julien Benac <contact@julienbenac.fr>
* @license MIT
*/
declare function gerermesaffaires(config: GererMesAffairesDriverConfig): (ctx: HttpContext) => GererMesAffairesDriver;
export { type GererMesAffairesToken, configure, gerermesaffaires, stubsRoot };