UNPKG

@authup/core-kit

Version:

Package containing global constants, types & interfaces.

389 lines (365 loc) 15 kB
import { AuthupError, ErrorCode } from '@authup/errors'; class ClientError extends AuthupError { static credentialsInvalid() { return new ClientError({ code: ErrorCode.ENTITY_CREDENTIALS_INVALID, message: 'The client credentials are invalid.' }); } static notFound() { return new ClientError({ code: ErrorCode.ENTITY_NOT_FOUND, message: 'The client account was not found.' }); } static inactive() { return new ClientError({ code: ErrorCode.ENTITY_INACTIVE, message: 'The client account is inactive.' }); } } function isNameValid(input, options = {}) { if (/\s/g.test(input)) { if (options.throwOnFailure) { throw new AuthupError('Whitespace character is not allowed.'); } return false; } if (/^[A-Za-z0-9-_.]+$/.test(input)) { return true; } if (options.throwOnFailure) { throw new AuthupError('Only the characters [A-Za-z0-9-_.]+ are allowed.'); } return false; } function isClientNameValid(name, options = {}) { return isNameValid(name, options); } /* * Copyright (c) 2022. * Author Peter Placzek (tada5hi) * For the full copyright and license information, * view the LICENSE file that was distributed with this source code. */ var IdentityProviderProtocol = /*#__PURE__*/ function(IdentityProviderProtocol) { IdentityProviderProtocol["LDAP"] = "ldap"; IdentityProviderProtocol["OAUTH2"] = "oauth2"; IdentityProviderProtocol["OIDC"] = "oidc"; return IdentityProviderProtocol; }({}); var IdentityProviderMappingSyncMode = /*#__PURE__*/ function(IdentityProviderMappingSyncMode) { /** * Synchronize on initial user login. */ IdentityProviderMappingSyncMode["ONCE"] = "once"; /** * Synchronize on every user login. */ IdentityProviderMappingSyncMode["ALWAYS"] = "always"; /** * Synchronize based on idp configuration. */ IdentityProviderMappingSyncMode["INHERIT"] = "inherit"; return IdentityProviderMappingSyncMode; }({}); function buildIdentityProviderAuthorizeCallbackPath(id) { return `/identity-providers/${id}/authorize-callback`; } function buildIdentityProviderAuthorizePath(id) { return `/identity-providers/${id}/authorize-url`; } function isIdentityProviderNameValid(input, options = {}) { return isNameValid(input, options); } /* * Copyright (c) 2023. * Author Peter Placzek (tada5hi) * For the full copyright and license information, * view the LICENSE file that was distributed with this source code. */ var IdentityProviderPreset = /*#__PURE__*/ function(IdentityProviderPreset) { IdentityProviderPreset["FACEBOOK"] = "facebook"; IdentityProviderPreset["GITHUB"] = "github"; IdentityProviderPreset["GITLAB"] = "gitlab"; IdentityProviderPreset["GOOGLE"] = "google"; IdentityProviderPreset["PAYPAL"] = "paypal"; IdentityProviderPreset["INSTAGRAM"] = "instagram"; IdentityProviderPreset["STACKOVERFLOW"] = "stackoverflow"; IdentityProviderPreset["TWITTER"] = "twitter"; return IdentityProviderPreset; }({}); function getIdentityProviderProtocolForPreset(id) { switch(id){ case IdentityProviderPreset.GITHUB: case IdentityProviderPreset.GITLAB: case IdentityProviderPreset.GOOGLE: case IdentityProviderPreset.FACEBOOK: case IdentityProviderPreset.INSTAGRAM: case IdentityProviderPreset.PAYPAL: case IdentityProviderPreset.STACKOVERFLOW: case IdentityProviderPreset.TWITTER: return IdentityProviderProtocol.OIDC; } return undefined; } /* * Copyright (c) 2021. * Author Peter Placzek (tada5hi) * For the full copyright and license information, * view the LICENSE file that was distributed with this source code. */ var PermissionName = /*#__PURE__*/ function(PermissionName) { PermissionName["CLIENT_CREATE"] = "client_create"; PermissionName["CLIENT_DELETE"] = "client_delete"; PermissionName["CLIENT_UPDATE"] = "client_update"; PermissionName["CLIENT_READ"] = "client_read"; PermissionName["CLIENT_SELF_MANAGE"] = "client_self_manage"; PermissionName["CLIENT_PERMISSION_CREATE"] = "client_permission_create"; PermissionName["CLIENT_PERMISSION_DELETE"] = "client_permission_delete"; PermissionName["CLIENT_PERMISSION_READ"] = "client_permission_read"; PermissionName["CLIENT_ROLE_CREATE"] = "client_role_create"; PermissionName["CLIENT_ROLE_DELETE"] = "client_role_delete"; PermissionName["CLIENT_ROLE_UPDATE"] = "client_role_update"; PermissionName["CLIENT_ROLE_READ"] = "client_role_read"; PermissionName["CLIENT_SCOPE_CREATE"] = "client_scope_create"; PermissionName["CLIENT_SCOPE_DELETE"] = "client_scope_delete"; PermissionName["IDENTITY_PROVIDER_CREATE"] = "identity_provider_create"; PermissionName["IDENTITY_PROVIDER_DELETE"] = "identity_provider_delete"; PermissionName["IDENTITY_PROVIDER_UPDATE"] = "identity_provider_update"; PermissionName["IDENTITY_PROVIDER_READ"] = "identity_provider_read"; PermissionName["IDENTITY_PROVIDER_ROLE_CREATE"] = "identity_provider_role_create"; PermissionName["IDENTITY_PROVIDER_ROLE_DELETE"] = "identity_provider_role_delete"; PermissionName["IDENTITY_PROVIDER_ROLE_UPDATE"] = "identity_provider_role_update"; PermissionName["PERMISSION_CREATE"] = "permission_create"; PermissionName["PERMISSION_DELETE"] = "permission_delete"; PermissionName["PERMISSION_UPDATE"] = "permission_update"; PermissionName["PERMISSION_READ"] = "permission_read"; PermissionName["REALM_CREATE"] = "realm_create"; PermissionName["REALM_DELETE"] = "realm_delete"; PermissionName["REALM_UPDATE"] = "realm_update"; PermissionName["REALM_READ"] = "realm_read"; PermissionName["ROBOT_CREATE"] = "robot_create"; PermissionName["ROBOT_DELETE"] = "robot_delete"; PermissionName["ROBOT_UPDATE"] = "robot_update"; PermissionName["ROBOT_READ"] = "robot_read"; PermissionName["ROBOT_SELF_MANAGE"] = "robot_self_manage"; PermissionName["ROBOT_PERMISSION_CREATE"] = "robot_permission_create"; PermissionName["ROBOT_PERMISSION_DELETE"] = "robot_permission_delete"; PermissionName["ROBOT_PERMISSION_READ"] = "robot_permission_read"; PermissionName["ROBOT_ROLE_CREATE"] = "robot_role_create"; PermissionName["ROBOT_ROLE_DELETE"] = "robot_role_delete"; PermissionName["ROBOT_ROLE_UPDATE"] = "robot_role_update"; PermissionName["ROBOT_ROLE_READ"] = "robot_role_read"; PermissionName["ROLE_CREATE"] = "role_create"; PermissionName["ROLE_DELETE"] = "role_delete"; PermissionName["ROLE_UPDATE"] = "role_update"; PermissionName["ROLE_READ"] = "role_read"; PermissionName["ROLE_PERMISSION_CREATE"] = "role_permission_create"; PermissionName["ROLE_PERMISSION_DELETE"] = "role_permission_delete"; PermissionName["ROLE_PERMISSION_READ"] = "role_permission_read"; PermissionName["SCOPE_CREATE"] = "scope_create"; PermissionName["SCOPE_DELETE"] = "scope_delete"; PermissionName["SCOPE_UPDATE"] = "scope_update"; PermissionName["SCOPE_READ"] = "scope_read"; PermissionName["USER_CREATE"] = "user_create"; PermissionName["USER_DELETE"] = "user_delete"; PermissionName["USER_UPDATE"] = "user_update"; PermissionName["USER_READ"] = "user_read"; PermissionName["USER_SELF_MANAGE"] = "user_self_update"; PermissionName["USER_PERMISSION_CREATE"] = "user_permission_create"; PermissionName["USER_PERMISSION_DELETE"] = "user_permission_delete"; PermissionName["USER_PERMISSION_READ"] = "user_permission_read"; PermissionName["USER_ROLE_CREATE"] = "user_role_create"; PermissionName["USER_ROLE_DELETE"] = "user_role_delete"; PermissionName["USER_ROLE_UPDATE"] = "user_role_update"; PermissionName["USER_ROLE_READ"] = "user_role_read"; return PermissionName; }({}); function isPermissionNameValid(name, options = {}) { return isNameValid(name, options); } function isPolicyNameValid(name, options = {}) { return isNameValid(name, options); } /* * Copyright (c) 2022. * Author Peter Placzek (tada5hi) * For the full copyright and license information, * view the LICENSE file that was distributed with this source code. */ const REALM_MASTER_NAME = 'master'; const REALM_NAME_REGEX = /^[a-zA-Z0-9_]{3,128}$/; function isRealmNameValid(name, options = {}) { return isNameValid(name, options); } function isRobotNameValid(name, options = {}) { return isNameValid(name, options); } class RobotError extends AuthupError { static credentialsInvalid() { return new RobotError({ code: ErrorCode.ENTITY_CREDENTIALS_INVALID, message: 'The robot credentials are invalid.' }); } static notFound() { return new RobotError({ code: ErrorCode.ENTITY_NOT_FOUND, message: 'The robot account was not found.' }); } static inactive() { return new RobotError({ code: ErrorCode.ENTITY_INACTIVE, message: 'The robot account is inactive.' }); } } /* * Copyright (c) 2024. * Author Peter Placzek (tada5hi) * For the full copyright and license information, * view the LICENSE file that was distributed with this source code. */ const ROLE_ADMIN_NAME = 'admin'; function isRoleNameValid(name, options = {}) { return isNameValid(name, options); } /* * Copyright (c) 2022. * Author Peter Placzek (tada5hi) * For the full copyright and license information, * view the LICENSE file that was distributed with this source code. */ var ScopeName = /*#__PURE__*/ function(ScopeName) { /** * Full permissions (userinfo & id-token) */ ScopeName["GLOBAL"] = "global"; /** * for Openid usage (id-token) */ ScopeName["OPEN_ID"] = "openid"; /** * /users/@me with email (userinfo & id-token) */ ScopeName["EMAIL"] = "email"; /** * Roles array (id-token) */ ScopeName["ROLES"] = "roles"; /** * /users/@me without email (userinfo & id-token) */ ScopeName["IDENTITY"] = "identity"; return ScopeName; }({}); function transformOAuth2ScopeToArray(scope) { if (!scope) { return []; } if (Array.isArray(scope)) { return scope; } return scope.split(/\s+|,+/); } function hasOAuth2OpenIDScope(scope) { return transformOAuth2ScopeToArray(scope).indexOf(ScopeName.OPEN_ID) !== -1; } function isOAuth2ScopeAllowed(available, required) { available = transformOAuth2ScopeToArray(available); if (available.indexOf(ScopeName.GLOBAL) !== -1) { return true; } if (available.length === 0) { return false; } required = transformOAuth2ScopeToArray(required); for(let i = 0; i < required.length; i++){ if (available.indexOf(required[i]) === -1) { return false; } } return true; } function isScopeNameValid(name, options = {}) { return isNameValid(name, options); } class UserError extends AuthupError { static credentialsInvalid() { return new UserError({ code: ErrorCode.ENTITY_CREDENTIALS_INVALID, message: 'The user credentials are invalid.' }); } static notFound() { return new UserError({ code: ErrorCode.ENTITY_NOT_FOUND, message: 'The user account was not found.' }); } static inactive() { return new UserError({ code: ErrorCode.ENTITY_INACTIVE, message: 'The user account is inactive.' }); } } function isUserNameValid(input, options = {}) { if (!isNameValid(input, options)) return false; input = input.toLowerCase(); const isReservedName = [ 'bot', 'system', 'everyone', 'here' ].some((el)=>input.startsWith(el)); if (isReservedName) { if (options.throwOnFailure) { throw new AuthupError(`${input} is a reserved name.`); } return false; } return true; } function isValidUserEmail(input) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(input); } /* * Copyright (c) 2023. * Author Peter Placzek (tada5hi) * For the full copyright and license information, * view the LICENSE file that was distributed with this source code. */ var EntityType = /*#__PURE__*/ function(EntityType) { EntityType["CLIENT"] = "client"; EntityType["CLIENT_PERMISSION"] = "clientPermission"; EntityType["CLIENT_ROLE"] = "clientRole"; EntityType["CLIENT_SCOPE"] = "clientScope"; EntityType["IDENTITY_PROVIDER"] = "identityProvider"; EntityType["IDENTITY_PROVIDER_ACCOUNT"] = "identityProviderAccount"; EntityType["IDENTITY_PROVIDER_ATTRIBUTE"] = "identityProviderAttribute"; EntityType["IDENTITY_PROVIDER_ROLE_MAPPING"] = "identityProviderRoleMapping"; EntityType["POLICY"] = "policy"; EntityType["POLICY_ATTRIBUTE"] = "policyAttribute"; EntityType["PERMISSION"] = "permission"; EntityType["REALM"] = "realm"; EntityType["ROBOT"] = "robot"; EntityType["ROBOT_PERMISSION"] = "robotPermission"; EntityType["ROBOT_ROLE"] = "robotRole"; EntityType["ROLE"] = "role"; EntityType["ROLE_ATTRIBUTE"] = "roleAttribute"; EntityType["ROLE_PERMISSION"] = "rolePermission"; EntityType["SCOPE"] = "scope"; EntityType["USER"] = "user"; EntityType["USER_ATTRIBUTE"] = "userAttribute"; EntityType["USER_PERMISSION"] = "userPermission"; EntityType["USER_ROLE"] = "userRole"; return EntityType; }({}); var EntityDefaultEventName = /*#__PURE__*/ function(EntityDefaultEventName) { EntityDefaultEventName["CREATED"] = "created"; EntityDefaultEventName["DELETED"] = "deleted"; EntityDefaultEventName["UPDATED"] = "updated"; return EntityDefaultEventName; }({}); /* * Copyright (c) 2025. * Author Peter Placzek (tada5hi) * For the full copyright and license information, * view the LICENSE file that was distributed with this source code. */ function buildEntityChannelName(entity, id) { return id ? `${entity}:${id}` : entity; } function buildEntityNamespaceName(id) { return `/realm#${id}`; } export { ClientError, EntityDefaultEventName, EntityType, IdentityProviderMappingSyncMode, IdentityProviderPreset, IdentityProviderProtocol, PermissionName, REALM_MASTER_NAME, REALM_NAME_REGEX, ROLE_ADMIN_NAME, RobotError, ScopeName, UserError, buildEntityChannelName, buildEntityNamespaceName, buildIdentityProviderAuthorizeCallbackPath, buildIdentityProviderAuthorizePath, getIdentityProviderProtocolForPreset, hasOAuth2OpenIDScope, isClientNameValid, isIdentityProviderNameValid, isNameValid, isOAuth2ScopeAllowed, isPermissionNameValid, isPolicyNameValid, isRealmNameValid, isRobotNameValid, isRoleNameValid, isScopeNameValid, isUserNameValid, isValidUserEmail, transformOAuth2ScopeToArray }; //# sourceMappingURL=index.mjs.map