@lytjs/plugin-auth 6.5.0 → 6.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["signal","definePlugin"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\r\n * @lytjs/plugin-auth\r\n *\r\n * LytJS official auth plugin for route authorization, permission checking, and role management.\r\n *\r\n * @packageDocumentation\r\n */\r\n\r\nimport { definePlugin } from '@lytjs/core';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { User, AuthOptions, AuthInstance } from './types';\r\n\r\nfunction createAuth(options: AuthOptions = {}): AuthInstance {\r\n const {\r\n initialUser = null,\r\n storageKey = 'lyt-user',\r\n enablePersistence = false,\r\n superAdminRole = 'super-admin',\r\n } = options;\r\n\r\n const userSignal = signal<User | null>(initialUser);\r\n const isAuthenticatedSignal = signal<boolean>(!!initialUser);\r\n\r\n function getStoredUser(): User | null {\r\n if (!enablePersistence || typeof localStorage === 'undefined') return null;\r\n try {\r\n const stored = localStorage.getItem(storageKey);\r\n return stored ? JSON.parse(stored) : null;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n function saveUser(user: User | null) {\r\n if (!enablePersistence || typeof localStorage === 'undefined') return;\r\n try {\r\n if (user) {\r\n localStorage.setItem(storageKey, JSON.stringify(user));\r\n } else {\r\n localStorage.removeItem(storageKey);\r\n }\r\n } catch {\r\n }\r\n }\r\n\r\n function login(user: User) {\r\n userSignal.set(user);\r\n isAuthenticatedSignal.set(true);\r\n saveUser(user);\r\n }\r\n\r\n function logout() {\r\n userSignal.set(null);\r\n isAuthenticatedSignal.set(false);\r\n saveUser(null);\r\n }\r\n\r\n function hasRole(role: string | string[]): boolean {\r\n const user = userSignal();\r\n if (!user) return false;\r\n\r\n if (user.roles.includes(superAdminRole)) return true;\r\n\r\n const roles = Array.isArray(role) ? role : [role];\r\n return roles.some((r) => user.roles.includes(r));\r\n }\r\n\r\n function hasAllRoles(roles: string[]): boolean {\r\n const user = userSignal();\r\n if (!user) return false;\r\n\r\n if (user.roles.includes(superAdminRole)) return true;\r\n\r\n return roles.every((r) => user.roles.includes(r));\r\n }\r\n\r\n function hasPermission(permission: string | string[]): boolean {\r\n const user = userSignal();\r\n if (!user) return false;\r\n\r\n if (user.roles.includes(superAdminRole)) return true;\r\n\r\n const permissions = Array.isArray(permission) ? permission : [permission];\r\n return permissions.some((p) => user.permissions.includes(p));\r\n }\r\n\r\n function hasAllPermissions(permissions: string[]): boolean {\r\n const user = userSignal();\r\n if (!user) return false;\r\n\r\n if (user.roles.includes(superAdminRole)) return true;\r\n\r\n return permissions.every((p) => user.permissions.includes(p));\r\n }\r\n\r\n function updateUser(partialUser: Partial<User>) {\r\n const currentUser = userSignal();\r\n if (!currentUser) return;\r\n\r\n const newUser = { ...currentUser, ...partialUser };\r\n userSignal.set(newUser);\r\n saveUser(newUser);\r\n }\r\n\r\n function init() {\r\n const storedUser = getStoredUser();\r\n if (storedUser) {\r\n userSignal.set(storedUser);\r\n isAuthenticatedSignal.set(true);\r\n }\r\n }\r\n\r\n init();\r\n\r\n return {\r\n get user() {\r\n return userSignal();\r\n },\r\n get isAuthenticated() {\r\n return isAuthenticatedSignal();\r\n },\r\n login,\r\n logout,\r\n hasRole,\r\n hasPermission,\r\n hasAllRoles,\r\n hasAllPermissions,\r\n updateUser,\r\n };\r\n}\r\n\r\nconst pluginAuth = definePlugin({\r\n name: 'auth',\r\n version: '6.0.0',\r\n description: 'LytJS official auth plugin for route authorization, permission checking, and role management',\r\n author: 'LytJS Team',\r\n keywords: ['lytjs', 'auth', 'authorization', 'permission', 'role'],\r\n schema: {\r\n type: 'object',\r\n object: {\r\n properties: {\r\n initialUser: { type: 'object', default: null },\r\n storageKey: { type: 'string', default: 'lyt-user' },\r\n enablePersistence: { type: 'boolean', default: false },\r\n superAdminRole: { type: 'string', default: 'super-admin' },\r\n },\r\n },\r\n },\r\n install(app, options) {\r\n const auth = createAuth(options as AuthOptions);\r\n\r\n app.config.globalProperties.$auth = auth;\r\n\r\n app.provide('lyt-auth', auth);\r\n },\r\n});\r\n\r\nexport default pluginAuth;\r\nexport type { User, AuthOptions, AuthInstance };\r\nexport { createAuth };\r\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["signal","definePlugin"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @lytjs/plugin-auth\n *\n * LytJS official auth plugin for route authorization, permission checking, and role management.\n *\n * @packageDocumentation\n */\n\nimport { definePlugin } from '@lytjs/core';\nimport { signal } from '@lytjs/reactivity';\nimport type { User, AuthOptions, AuthInstance } from './types';\n\nfunction createAuth(options: AuthOptions = {}): AuthInstance {\n const {\n initialUser = null,\n storageKey = 'lyt-user',\n enablePersistence = false,\n superAdminRole = 'super-admin',\n } = options;\n\n const userSignal = signal<User | null>(initialUser);\n const isAuthenticatedSignal = signal<boolean>(!!initialUser);\n\n function getStoredUser(): User | null {\n if (!enablePersistence || typeof localStorage === 'undefined') return null;\n try {\n const stored = localStorage.getItem(storageKey);\n return stored ? JSON.parse(stored) : null;\n } catch {\n /* empty */\n return null;\n }\n }\n\n function saveUser(user: User | null) {\n if (!enablePersistence || typeof localStorage === 'undefined') return;\n try {\n if (user) {\n localStorage.setItem(storageKey, JSON.stringify(user));\n } else {\n localStorage.removeItem(storageKey);\n }\n } catch {\n /* empty */\n }\n }\n\n function login(user: User) {\n userSignal.set(user);\n isAuthenticatedSignal.set(true);\n saveUser(user);\n }\n\n function logout() {\n userSignal.set(null);\n isAuthenticatedSignal.set(false);\n saveUser(null);\n }\n\n function hasRole(role: string | string[]): boolean {\n const user = userSignal();\n if (!user) return false;\n\n if (user.roles.includes(superAdminRole)) return true;\n\n const roles = Array.isArray(role) ? role : [role];\n return roles.some((r) => user.roles.includes(r));\n }\n\n function hasAllRoles(roles: string[]): boolean {\n const user = userSignal();\n if (!user) return false;\n\n if (user.roles.includes(superAdminRole)) return true;\n\n return roles.every((r) => user.roles.includes(r));\n }\n\n function hasPermission(permission: string | string[]): boolean {\n const user = userSignal();\n if (!user) return false;\n\n if (user.roles.includes(superAdminRole)) return true;\n\n const permissions = Array.isArray(permission) ? permission : [permission];\n return permissions.some((p) => user.permissions.includes(p));\n }\n\n function hasAllPermissions(permissions: string[]): boolean {\n const user = userSignal();\n if (!user) return false;\n\n if (user.roles.includes(superAdminRole)) return true;\n\n return permissions.every((p) => user.permissions.includes(p));\n }\n\n function updateUser(partialUser: Partial<User>) {\n const currentUser = userSignal();\n if (!currentUser) return;\n\n const newUser = { ...currentUser, ...partialUser };\n userSignal.set(newUser);\n saveUser(newUser);\n }\n\n function init() {\n const storedUser = getStoredUser();\n if (storedUser) {\n userSignal.set(storedUser);\n isAuthenticatedSignal.set(true);\n }\n }\n\n init();\n\n return {\n get user() {\n return userSignal();\n },\n get isAuthenticated() {\n return isAuthenticatedSignal();\n },\n login,\n logout,\n hasRole,\n hasPermission,\n hasAllRoles,\n hasAllPermissions,\n updateUser,\n };\n}\n\nconst pluginAuth = definePlugin({\n name: 'auth',\n version: '6.0.0',\n description:\n 'LytJS official auth plugin for route authorization, permission checking, and role management',\n author: 'LytJS Team',\n keywords: ['lytjs', 'auth', 'authorization', 'permission', 'role'],\n schema: {\n type: 'object',\n object: {\n properties: {\n initialUser: { type: 'object', default: null },\n storageKey: { type: 'string', default: 'lyt-user' },\n enablePersistence: { type: 'boolean', default: false },\n superAdminRole: { type: 'string', default: 'super-admin' },\n },\n },\n },\n install(app, options) {\n const auth = createAuth(options as AuthOptions);\n\n app.config.globalProperties.$auth = auth;\n\n app.provide('lyt-auth', auth);\n },\n});\n\nexport default pluginAuth;\nexport type { User, AuthOptions, AuthInstance };\nexport { createAuth };\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\r\n * @lytjs/plugin-auth\r\n *\r\n * LytJS official auth plugin for route authorization, permission checking, and role management.\r\n *\r\n * @packageDocumentation\r\n */\r\n\r\nimport { definePlugin } from '@lytjs/core';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { User, AuthOptions, AuthInstance } from './types';\r\n\r\nfunction createAuth(options: AuthOptions = {}): AuthInstance {\r\n const {\r\n initialUser = null,\r\n storageKey = 'lyt-user',\r\n enablePersistence = false,\r\n superAdminRole = 'super-admin',\r\n } = options;\r\n\r\n const userSignal = signal<User | null>(initialUser);\r\n const isAuthenticatedSignal = signal<boolean>(!!initialUser);\r\n\r\n function getStoredUser(): User | null {\r\n if (!enablePersistence || typeof localStorage === 'undefined') return null;\r\n try {\r\n const stored = localStorage.getItem(storageKey);\r\n return stored ? JSON.parse(stored) : null;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n function saveUser(user: User | null) {\r\n if (!enablePersistence || typeof localStorage === 'undefined') return;\r\n try {\r\n if (user) {\r\n localStorage.setItem(storageKey, JSON.stringify(user));\r\n } else {\r\n localStorage.removeItem(storageKey);\r\n }\r\n } catch {\r\n }\r\n }\r\n\r\n function login(user: User) {\r\n userSignal.set(user);\r\n isAuthenticatedSignal.set(true);\r\n saveUser(user);\r\n }\r\n\r\n function logout() {\r\n userSignal.set(null);\r\n isAuthenticatedSignal.set(false);\r\n saveUser(null);\r\n }\r\n\r\n function hasRole(role: string | string[]): boolean {\r\n const user = userSignal();\r\n if (!user) return false;\r\n\r\n if (user.roles.includes(superAdminRole)) return true;\r\n\r\n const roles = Array.isArray(role) ? role : [role];\r\n return roles.some((r) => user.roles.includes(r));\r\n }\r\n\r\n function hasAllRoles(roles: string[]): boolean {\r\n const user = userSignal();\r\n if (!user) return false;\r\n\r\n if (user.roles.includes(superAdminRole)) return true;\r\n\r\n return roles.every((r) => user.roles.includes(r));\r\n }\r\n\r\n function hasPermission(permission: string | string[]): boolean {\r\n const user = userSignal();\r\n if (!user) return false;\r\n\r\n if (user.roles.includes(superAdminRole)) return true;\r\n\r\n const permissions = Array.isArray(permission) ? permission : [permission];\r\n return permissions.some((p) => user.permissions.includes(p));\r\n }\r\n\r\n function hasAllPermissions(permissions: string[]): boolean {\r\n const user = userSignal();\r\n if (!user) return false;\r\n\r\n if (user.roles.includes(superAdminRole)) return true;\r\n\r\n return permissions.every((p) => user.permissions.includes(p));\r\n }\r\n\r\n function updateUser(partialUser: Partial<User>) {\r\n const currentUser = userSignal();\r\n if (!currentUser) return;\r\n\r\n const newUser = { ...currentUser, ...partialUser };\r\n userSignal.set(newUser);\r\n saveUser(newUser);\r\n }\r\n\r\n function init() {\r\n const storedUser = getStoredUser();\r\n if (storedUser) {\r\n userSignal.set(storedUser);\r\n isAuthenticatedSignal.set(true);\r\n }\r\n }\r\n\r\n init();\r\n\r\n return {\r\n get user() {\r\n return userSignal();\r\n },\r\n get isAuthenticated() {\r\n return isAuthenticatedSignal();\r\n },\r\n login,\r\n logout,\r\n hasRole,\r\n hasPermission,\r\n hasAllRoles,\r\n hasAllPermissions,\r\n updateUser,\r\n };\r\n}\r\n\r\nconst pluginAuth = definePlugin({\r\n name: 'auth',\r\n version: '6.0.0',\r\n description: 'LytJS official auth plugin for route authorization, permission checking, and role management',\r\n author: 'LytJS Team',\r\n keywords: ['lytjs', 'auth', 'authorization', 'permission', 'role'],\r\n schema: {\r\n type: 'object',\r\n object: {\r\n properties: {\r\n initialUser: { type: 'object', default: null },\r\n storageKey: { type: 'string', default: 'lyt-user' },\r\n enablePersistence: { type: 'boolean', default: false },\r\n superAdminRole: { type: 'string', default: 'super-admin' },\r\n },\r\n },\r\n },\r\n install(app, options) {\r\n const auth = createAuth(options as AuthOptions);\r\n\r\n app.config.globalProperties.$auth = auth;\r\n\r\n app.provide('lyt-auth', auth);\r\n },\r\n});\r\n\r\nexport default pluginAuth;\r\nexport type { User, AuthOptions, AuthInstance };\r\nexport { createAuth };\r\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @lytjs/plugin-auth\n *\n * LytJS official auth plugin for route authorization, permission checking, and role management.\n *\n * @packageDocumentation\n */\n\nimport { definePlugin } from '@lytjs/core';\nimport { signal } from '@lytjs/reactivity';\nimport type { User, AuthOptions, AuthInstance } from './types';\n\nfunction createAuth(options: AuthOptions = {}): AuthInstance {\n const {\n initialUser = null,\n storageKey = 'lyt-user',\n enablePersistence = false,\n superAdminRole = 'super-admin',\n } = options;\n\n const userSignal = signal<User | null>(initialUser);\n const isAuthenticatedSignal = signal<boolean>(!!initialUser);\n\n function getStoredUser(): User | null {\n if (!enablePersistence || typeof localStorage === 'undefined') return null;\n try {\n const stored = localStorage.getItem(storageKey);\n return stored ? JSON.parse(stored) : null;\n } catch {\n /* empty */\n return null;\n }\n }\n\n function saveUser(user: User | null) {\n if (!enablePersistence || typeof localStorage === 'undefined') return;\n try {\n if (user) {\n localStorage.setItem(storageKey, JSON.stringify(user));\n } else {\n localStorage.removeItem(storageKey);\n }\n } catch {\n /* empty */\n }\n }\n\n function login(user: User) {\n userSignal.set(user);\n isAuthenticatedSignal.set(true);\n saveUser(user);\n }\n\n function logout() {\n userSignal.set(null);\n isAuthenticatedSignal.set(false);\n saveUser(null);\n }\n\n function hasRole(role: string | string[]): boolean {\n const user = userSignal();\n if (!user) return false;\n\n if (user.roles.includes(superAdminRole)) return true;\n\n const roles = Array.isArray(role) ? role : [role];\n return roles.some((r) => user.roles.includes(r));\n }\n\n function hasAllRoles(roles: string[]): boolean {\n const user = userSignal();\n if (!user) return false;\n\n if (user.roles.includes(superAdminRole)) return true;\n\n return roles.every((r) => user.roles.includes(r));\n }\n\n function hasPermission(permission: string | string[]): boolean {\n const user = userSignal();\n if (!user) return false;\n\n if (user.roles.includes(superAdminRole)) return true;\n\n const permissions = Array.isArray(permission) ? permission : [permission];\n return permissions.some((p) => user.permissions.includes(p));\n }\n\n function hasAllPermissions(permissions: string[]): boolean {\n const user = userSignal();\n if (!user) return false;\n\n if (user.roles.includes(superAdminRole)) return true;\n\n return permissions.every((p) => user.permissions.includes(p));\n }\n\n function updateUser(partialUser: Partial<User>) {\n const currentUser = userSignal();\n if (!currentUser) return;\n\n const newUser = { ...currentUser, ...partialUser };\n userSignal.set(newUser);\n saveUser(newUser);\n }\n\n function init() {\n const storedUser = getStoredUser();\n if (storedUser) {\n userSignal.set(storedUser);\n isAuthenticatedSignal.set(true);\n }\n }\n\n init();\n\n return {\n get user() {\n return userSignal();\n },\n get isAuthenticated() {\n return isAuthenticatedSignal();\n },\n login,\n logout,\n hasRole,\n hasPermission,\n hasAllRoles,\n hasAllPermissions,\n updateUser,\n };\n}\n\nconst pluginAuth = definePlugin({\n name: 'auth',\n version: '6.0.0',\n description:\n 'LytJS official auth plugin for route authorization, permission checking, and role management',\n author: 'LytJS Team',\n keywords: ['lytjs', 'auth', 'authorization', 'permission', 'role'],\n schema: {\n type: 'object',\n object: {\n properties: {\n initialUser: { type: 'object', default: null },\n storageKey: { type: 'string', default: 'lyt-user' },\n enablePersistence: { type: 'boolean', default: false },\n superAdminRole: { type: 'string', default: 'super-admin' },\n },\n },\n },\n install(app, options) {\n const auth = createAuth(options as AuthOptions);\n\n app.config.globalProperties.$auth = auth;\n\n app.provide('lyt-auth', auth);\n },\n});\n\nexport default pluginAuth;\nexport type { User, AuthOptions, AuthInstance };\nexport { createAuth };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lytjs/plugin-auth",
3
- "version": "6.5.0",
3
+ "version": "6.7.0",
4
4
  "description": "LytJS official auth plugin for route authorization, permission checking, and role management",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -29,9 +29,9 @@
29
29
  "clean": "rm -rf dist"
30
30
  },
31
31
  "dependencies": {
32
- "@lytjs/core": "^6.0.0",
33
- "@lytjs/reactivity": "^6.0.0",
34
- "@lytjs/common-is": "^6.0.0"
32
+ "@lytjs/core": "^6.7.0",
33
+ "@lytjs/reactivity": "^6.7.0",
34
+ "@lytjs/common-is": "^6.7.0"
35
35
  },
36
36
  "devDependencies": {
37
37
  "tsup": "^8.0.0",
package/dist/index.d.cts DELETED
@@ -1,52 +0,0 @@
1
- import * as _lytjs_core from '@lytjs/core';
2
-
3
- /**
4
- * @lytjs/plugin-auth - 类型定义
5
- */
6
- interface User {
7
- /** 用户 ID */
8
- id: string | number;
9
- /** 用户名 */
10
- username?: string;
11
- /** 角色列表 */
12
- roles: string[];
13
- /** 权限列表 */
14
- permissions: string[];
15
- /** 附加数据 */
16
- [key: string]: unknown;
17
- }
18
- interface AuthOptions {
19
- /** 初始用户 */
20
- initialUser?: User | null;
21
- /** 持久化 key */
22
- storageKey?: string;
23
- /** 是否启用持久化 */
24
- enablePersistence?: boolean;
25
- /** 超级管理员角色 */
26
- superAdminRole?: string;
27
- }
28
- interface AuthInstance {
29
- /** 当前用户 */
30
- user: User | null;
31
- /** 是否已登录 */
32
- isAuthenticated: boolean;
33
- /** 登录 */
34
- login: (user: User) => void;
35
- /** 登出 */
36
- logout: () => void;
37
- /** 检查角色 */
38
- hasRole: (role: string | string[]) => boolean;
39
- /** 检查权限 */
40
- hasPermission: (permission: string | string[]) => boolean;
41
- /** 检查所有角色 */
42
- hasAllRoles: (roles: string[]) => boolean;
43
- /** 检查所有权限 */
44
- hasAllPermissions: (permissions: string[]) => boolean;
45
- /** 更新用户信息 */
46
- updateUser: (user: Partial<User>) => void;
47
- }
48
-
49
- declare function createAuth(options?: AuthOptions): AuthInstance;
50
- declare const pluginAuth: _lytjs_core.PluginDefinition<unknown>;
51
-
52
- export { type AuthInstance, type AuthOptions, type User, createAuth, pluginAuth as default };
package/dist/index.d.ts DELETED
@@ -1,52 +0,0 @@
1
- import * as _lytjs_core from '@lytjs/core';
2
-
3
- /**
4
- * @lytjs/plugin-auth - 类型定义
5
- */
6
- interface User {
7
- /** 用户 ID */
8
- id: string | number;
9
- /** 用户名 */
10
- username?: string;
11
- /** 角色列表 */
12
- roles: string[];
13
- /** 权限列表 */
14
- permissions: string[];
15
- /** 附加数据 */
16
- [key: string]: unknown;
17
- }
18
- interface AuthOptions {
19
- /** 初始用户 */
20
- initialUser?: User | null;
21
- /** 持久化 key */
22
- storageKey?: string;
23
- /** 是否启用持久化 */
24
- enablePersistence?: boolean;
25
- /** 超级管理员角色 */
26
- superAdminRole?: string;
27
- }
28
- interface AuthInstance {
29
- /** 当前用户 */
30
- user: User | null;
31
- /** 是否已登录 */
32
- isAuthenticated: boolean;
33
- /** 登录 */
34
- login: (user: User) => void;
35
- /** 登出 */
36
- logout: () => void;
37
- /** 检查角色 */
38
- hasRole: (role: string | string[]) => boolean;
39
- /** 检查权限 */
40
- hasPermission: (permission: string | string[]) => boolean;
41
- /** 检查所有角色 */
42
- hasAllRoles: (roles: string[]) => boolean;
43
- /** 检查所有权限 */
44
- hasAllPermissions: (permissions: string[]) => boolean;
45
- /** 更新用户信息 */
46
- updateUser: (user: Partial<User>) => void;
47
- }
48
-
49
- declare function createAuth(options?: AuthOptions): AuthInstance;
50
- declare const pluginAuth: _lytjs_core.PluginDefinition<unknown>;
51
-
52
- export { type AuthInstance, type AuthOptions, type User, createAuth, pluginAuth as default };