37 lines
1.5 KiB
TypeScript
37 lines
1.5 KiB
TypeScript
import type { InstallURLOptions } from '../install-url-options';
|
|
/**
|
|
* The data structure represented by the state parameter.
|
|
*/
|
|
export interface StateObj {
|
|
/**
|
|
* The timestamp that the state object was generated.
|
|
*/
|
|
now: Date;
|
|
/**
|
|
* The passed InstallURLOptions object when generating this state parameter.
|
|
*/
|
|
installOptions: InstallURLOptions;
|
|
random?: string | number;
|
|
}
|
|
/**
|
|
* Generates state parameter value in the OAuth flow.
|
|
* While the state parameter value works for the CSRF protection purpose,
|
|
* it can transfer the given InstallURLOptions value to the Redirect URL handler
|
|
* (Redirect URL: the default path is "/slack/oauth_redirect")
|
|
*/
|
|
export interface StateStore {
|
|
/**
|
|
* Generates a valid state parameter value, which can be decoded as a StateObj object
|
|
* by the verifyStateParam() method. This value may be stored on the server-side with expiration.
|
|
* The InstallProvider verifies if this value is set in the installer's browser session.
|
|
*/
|
|
generateStateParam: (installOptions: InstallURLOptions, now: Date) => Promise<string>;
|
|
/**
|
|
* Verifies the given state string value by trying to decode the value and
|
|
* build the passed InstallURLOptions object from the data.
|
|
* This method verifies if the state value is not too old to detect replay attacks.
|
|
* If the value is invalid, this method can throw InvalidStateError exception.
|
|
*/
|
|
verifyStateParam: (now: Date, state: string) => Promise<InstallURLOptions>;
|
|
}
|
|
//# sourceMappingURL=interface.d.ts.map
|