@authup/core-kit
Version:
Package containing global constants, types & interfaces.
389 lines (365 loc) • 15 kB
JavaScript
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