This repository has been archived on 2022-08-14. You can view files and clone it, but cannot push or open issues or pull requests.
outline/server/errors.js
Greg Linklater 4b2bf28531
feat: Generic OAuth2 Authentication (#2388)
* chore: additional dependency

* feat: OAuth2 authentication provider

* docs: add env vars

* chore: lock file

* feat: add malformed user info error and notice

* feat: configurable scopes

* fix: explicitly enable state and disable pkce

* chore: remove externally supplied username from account provisioner use

* chore: remove upstream error

* chore: add explicit import for fetch

* chore: remove unused env var from sample

* docs: openid connect claims

* fix: forward fetch errors

* feat: configurable team claim name

* docs: move OIDC env vars together

* refactor: change provider name

* refactor: rename error to match provider

* fix: resolve claim using lodash.get

* refactor: remove OIDC_TEAM_CLAIM and hard code team name
2021-09-02 19:50:17 -07:00

118 lines
3.2 KiB
JavaScript

// @flow
import httpErrors from "http-errors";
import env from "./env";
export function AuthenticationError(
message: string = "Invalid authentication",
redirectUrl: string = env.URL
) {
return httpErrors(401, message, {
redirectUrl,
id: "authentication_required",
});
}
export function AuthorizationError(
message: string = "You do not have permission to access this resource"
) {
return httpErrors(403, message, { id: "permission_required" });
}
export function AdminRequiredError(
message: string = "An admin role is required to access this resource"
) {
return httpErrors(403, message, { id: "admin_required" });
}
export function UserSuspendedError({ adminEmail }: { adminEmail: string }) {
return httpErrors(403, "Your access has been suspended by the team admin", {
id: "user_suspended",
errorData: {
adminEmail,
},
});
}
export function InvalidRequestError(message: string = "Request invalid") {
return httpErrors(400, message, { id: "invalid_request" });
}
export function NotFoundError(message: string = "Resource not found") {
return httpErrors(404, message, { id: "not_found" });
}
export function ParamRequiredError(
message: string = "Required parameter missing"
) {
return httpErrors(400, message, { id: "param_required" });
}
export function ValidationError(message: string = "Validation failed") {
return httpErrors(400, message, { id: "validation_error" });
}
export function EditorUpdateError(
message: string = "The client editor is out of date and must be reloaded"
) {
return httpErrors(400, message, { id: "editor_update_required" });
}
export function FileImportError(
message: string = "The file could not be imported"
) {
return httpErrors(400, message, { id: "import_error" });
}
export function OAuthStateMismatchError(
message: string = "State returned in OAuth flow did not match"
) {
return httpErrors(400, message, { id: "state_mismatch" });
}
export function MaximumTeamsError(
message: string = "The maximum number of teams has been reached"
) {
return httpErrors(400, message, { id: "maximum_teams" });
}
export function EmailAuthenticationRequiredError(
message: string = "User must authenticate with email",
redirectUrl: string = env.URL
) {
return httpErrors(400, message, { redirectUrl, id: "email_auth_required" });
}
export function MicrosoftGraphError(
message: string = "Microsoft Graph API did not return required fields"
) {
return httpErrors(400, message, { id: "graph_error" });
}
export function GoogleWorkspaceRequiredError(
message: string = "Google Workspace is required to authenticate"
) {
return httpErrors(400, message, { id: "google_hd" });
}
export function GoogleWorkspaceInvalidError(
message: string = "Google Workspace is invalid"
) {
return httpErrors(400, message, { id: "hd_not_allowed" });
}
export function OIDCMalformedUserInfoError(
message: string = "User profile information malformed"
) {
return httpErrors(400, message, { id: "malformed_user_info" });
}
export function AuthenticationProviderDisabledError(
message: string = "Authentication method has been disabled by an admin",
redirectUrl: string = env.URL
) {
return httpErrors(400, message, {
redirectUrl,
id: "authentication_provider_disabled",
});
}