mirror of
https://github.com/nestriness/nestri.git
synced 2026-09-20 17:55:20 +03:00
feat: Sync to OSS repo
This commit is contained in:
120
packages/auth/src/error.ts
Normal file
120
packages/auth/src/error.ts
Normal file
@@ -0,0 +1,120 @@
|
||||
/**
|
||||
* A list of errors that can be thrown by OpenAuth.
|
||||
*
|
||||
* You can use these errors to check the type of error and handle it. For example.
|
||||
*
|
||||
* ```ts
|
||||
* import { InvalidAuthorizationCodeError } from "@openauthjs/openauth/error"
|
||||
*
|
||||
* if (err instanceof InvalidAuthorizationCodeError) {
|
||||
* // handle invalid code error
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* @packageDocumentation
|
||||
*/
|
||||
|
||||
/**
|
||||
* The OAuth server returned an error.
|
||||
*/
|
||||
export class OauthError extends Error {
|
||||
constructor(
|
||||
public error:
|
||||
| 'invalid_request'
|
||||
| 'invalid_grant'
|
||||
| 'unauthorized_client'
|
||||
| 'access_denied'
|
||||
| 'unsupported_grant_type'
|
||||
| 'server_error'
|
||||
| 'temporarily_unavailable',
|
||||
public description: string
|
||||
) {
|
||||
super(error + ' - ' + description);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The `provider` needs to be passed in.
|
||||
*/
|
||||
export class MissingProviderError extends OauthError {
|
||||
constructor() {
|
||||
super(
|
||||
'invalid_request',
|
||||
'Must specify `provider` query parameter if `select` callback on issuer is not specified'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The given parameter is missing.
|
||||
*/
|
||||
export class MissingParameterError extends OauthError {
|
||||
constructor(public parameter: string) {
|
||||
super('invalid_request', 'Missing parameter: ' + parameter);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The given client is not authorized to use the redirect URI that was passed in.
|
||||
*/
|
||||
export class UnauthorizedClientError extends OauthError {
|
||||
constructor(
|
||||
public clientID: string,
|
||||
redirectURI: string
|
||||
) {
|
||||
super(
|
||||
'unauthorized_client',
|
||||
`Client ${clientID} is not authorized to use this redirect_uri: ${redirectURI}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The browser was in an unknown state.
|
||||
*
|
||||
* This can happen when certain cookies have expired. Or the browser was switched in the middle
|
||||
* of the authentication flow.
|
||||
*/
|
||||
export class UnknownStateError extends Error {
|
||||
constructor() {
|
||||
super(
|
||||
'The browser was in an unknown state. This could be because certain cookies expired or the browser was switched in the middle of an authentication flow.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The given subject is invalid.
|
||||
*/
|
||||
export class InvalidSubjectError extends Error {
|
||||
constructor() {
|
||||
super('Invalid subject');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The given refresh token is invalid.
|
||||
*/
|
||||
export class InvalidRefreshTokenError extends Error {
|
||||
constructor() {
|
||||
super('Invalid refresh token');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The given access token is invalid.
|
||||
*/
|
||||
export class InvalidAccessTokenError extends Error {
|
||||
constructor() {
|
||||
super('Invalid access token');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The given authorization code is invalid.
|
||||
*/
|
||||
export class InvalidAuthorizationCodeError extends Error {
|
||||
constructor() {
|
||||
super('Invalid authorization code');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user