@lytjs/plugin-auth 4.2.0 → 5.0.1

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.
package/README.md ADDED
@@ -0,0 +1,151 @@
1
+ # @lytjs/plugin-auth
2
+
3
+ > Lyt.js 认证授权插件 - 提供登录、权限校验、路由守卫等认证功能
4
+
5
+ **版本:** 4.2.0
6
+
7
+ ## 安装
8
+
9
+ ```bash
10
+ npm install @lytjs/plugin-auth
11
+ ```
12
+
13
+ ## 使用
14
+
15
+ ### 注册插件
16
+
17
+ ```typescript
18
+ import { createApp } from '@lytjs/core'
19
+ import { createAuth } from '@lytjs/plugin-auth'
20
+
21
+ const auth = createAuth({
22
+ loginUrl: '/api/login',
23
+ logoutUrl: '/api/logout',
24
+ userUrl: '/api/user',
25
+ tokenKey: 'lyt_token',
26
+ autoRedirect: true,
27
+ })
28
+
29
+ const app = createApp({})
30
+ app.use(auth)
31
+ ```
32
+
33
+ ### 登录与登出
34
+
35
+ ```typescript
36
+ // 登录
37
+ const { user, token } = await auth.login({
38
+ username: 'admin',
39
+ password: '123456',
40
+ })
41
+
42
+ // 登出
43
+ await auth.logout()
44
+ ```
45
+
46
+ ### 注册
47
+
48
+ ```typescript
49
+ const result = await auth.register({
50
+ username: 'newuser',
51
+ password: '123456',
52
+ email: 'user@example.com',
53
+ })
54
+ ```
55
+
56
+ ### 路由守卫
57
+
58
+ ```typescript
59
+ import { createRouter } from '@lytjs/router'
60
+
61
+ const router = createRouter({ /* ... */ })
62
+ auth.setupRouterGuard(router)
63
+ ```
64
+
65
+ ### 在组件中使用
66
+
67
+ 通过 `app.provide('auth', auth)` 注入后,可在组件中通过 `inject('auth')` 获取认证实例。
68
+
69
+ ```typescript
70
+ import { inject } from '@lytjs/core'
71
+
72
+ const auth = inject('auth')
73
+
74
+ // 检查登录状态
75
+ console.log(auth.isAuthenticated) // boolean
76
+
77
+ // 获取当前用户
78
+ console.log(auth.user) // AuthUser | null
79
+
80
+ // 获取 token
81
+ console.log(auth.token) // string | null
82
+
83
+ // 角色检查
84
+ auth.hasRole('admin') // boolean
85
+
86
+ // 权限检查
87
+ auth.hasPermission('write') // boolean
88
+ ```
89
+
90
+ ## API
91
+
92
+ ### Options
93
+
94
+ | 选项 | 类型 | 默认值 | 描述 |
95
+ |------|------|--------|------|
96
+ | `loginUrl` | `string` | **必填** | 登录接口地址 |
97
+ | `logoutUrl` | `string` | - | 登出接口地址 |
98
+ | `userUrl` | `string` | - | 获取当前用户信息接口地址 |
99
+ | `registerUrl` | `string` | - | 注册接口地址 |
100
+ | `refreshTokenUrl` | `string` | - | Token 刷新接口地址 |
101
+ | `tokenKey` | `string` | `'lyt_token'` | localStorage 中存储 token 的 key |
102
+ | `autoRedirect` | `boolean` | `false` | 未登录时是否自动跳转到登录页 |
103
+ | `loginRoute` | `string` | `'/login'` | 登录页路由路径 |
104
+ | `homeRoute` | `string` | `'/'` | 登录后跳转的路由路径 |
105
+ | `onLoginSuccess` | `(user: any) => void` | - | 登录成功回调 |
106
+ | `onLoginError` | `(error: Error) => void` | - | 登录失败回调 |
107
+ | `onLogout` | `() => void` | - | 登出回调 |
108
+ | `onUnauthorized` | `() => void` | - | 未授权回调(401 等) |
109
+ | `onTokenRefreshed` | `(newToken: string) => void` | - | Token 刷新成功回调 |
110
+ | `onTokenRefreshError` | `(error: Error) => void` | - | Token 刷新失败回调 |
111
+
112
+ ### 属性
113
+
114
+ | 属性 | 类型 | 描述 |
115
+ |------|------|------|
116
+ | `user` | `AuthUser \| null` | 当前用户信息 |
117
+ | `isAuthenticated` | `boolean` | 是否已认证 |
118
+ | `token` | `string \| null` | 当前 token |
119
+ | `loading` | `boolean` | 是否正在加载中 |
120
+
121
+ ### 方法
122
+
123
+ | 方法 | 签名 | 描述 |
124
+ |------|------|------|
125
+ | `login` | `(credentials: Record<string, unknown>) => Promise<AuthUser>` | 登录,支持多种响应格式自动提取 token |
126
+ | `logout` | `() => Promise<void>` | 登出,清除本地认证状态 |
127
+ | `register` | `(data: Record<string, unknown>) => Promise<AuthUser>` | 注册新用户 |
128
+ | `fetchUser` | `() => Promise<AuthUser>` | 获取当前用户信息 |
129
+ | `getToken` | `() => string \| null` | 获取当前 token |
130
+ | `setToken` | `(token: string) => void` | 设置 token(内存 + localStorage) |
131
+ | `removeToken` | `() => void` | 移除 token(内存 + localStorage) |
132
+ | `hasRole` | `(role: string) => boolean` | 检查用户是否拥有指定角色 |
133
+ | `hasPermission` | `(perm: string) => boolean` | 检查用户是否拥有指定权限 |
134
+ | `refreshToken` | `() => Promise<string \| null>` | 刷新 Token |
135
+ | `setupRouterGuard` | `(router: Record<string, unknown>) => void` | 设置路由守卫,自动检查登录状态 |
136
+
137
+ ### 类型
138
+
139
+ ```typescript
140
+ interface AuthUser {
141
+ id: string | number
142
+ name: string
143
+ email?: string
144
+ role?: string
145
+ [key: string]: unknown
146
+ }
147
+ ```
148
+
149
+ ## License
150
+
151
+ MIT
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- var T=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var D=(s,t)=>{for(var o in t)T(s,o,{get:t[o],enumerable:!0})},F=(s,t,o,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of C(t))!H.call(s,a)&&a!==o&&T(s,a,{get:()=>t[a],enumerable:!(l=j(t,a))||l.enumerable});return s};var M=s=>F(T({},"__esModule",{value:!0}),s);var W={};D(W,{createAuth:()=>V});module.exports=M(W);async function O(s,t={}){let o=await fetch(s,{headers:{"Content-Type":"application/json",...t.headers},...t});if(!o.ok){let a=await o.text().catch(()=>"\u8BF7\u6C42\u5931\u8D25");throw new Error(`HTTP ${o.status}: ${a}`)}let l=await o.text();if(!l)return null;try{return JSON.parse(l)}catch(a){return l}}async function Q(s,t){let o={};return t&&(o.Authorization=`Bearer ${t}`),O(s,{method:"GET",headers:o})}async function h(s,t,o){let l={};return o&&(l.Authorization=`Bearer ${o}`),O(s,{method:"POST",headers:l,body:JSON.stringify(t)})}function V(s){let{loginUrl:t,logoutUrl:o,userUrl:l,registerUrl:a,refreshTokenUrl:p,tokenKey:y="lyt_token",autoRedirect:q=!1,loginRoute:v="/login",homeRoute:I="/",onLoginSuccess:P,onLoginError:w,onLogout:R,onUnauthorized:A,onTokenRefreshed:U,onTokenRefreshError:b}=s,i=null,c=null,f=!1;try{let r=localStorage.getItem(y);r&&(c=r)}catch(r){}function E(){return!!c}function _(){return c}function d(r){c=r;try{localStorage.setItem(y,r)}catch(e){}}function m(){c=null;try{localStorage.removeItem(y)}catch(r){}}async function L(){if(!l)return i;f=!0;try{return i=await Q(l,c),i}catch(r){throw i=null,r}finally{f=!1}}async function $(r){var e,u;f=!0;try{let n=await h(t,r,null),g=(n==null?void 0:n.token)||(n==null?void 0:n.access_token)||((e=n==null?void 0:n.data)==null?void 0:e.token)||null;return g&&d(g),l?await L():(n!=null&&n.user||(u=n==null?void 0:n.data)!=null&&u.user)&&(i=n.user||n.data.user),P&&P(i),{user:i,token:g}}catch(n){throw w&&n instanceof Error&&w(n),n}finally{f=!1}}async function z(){f=!0;try{if(o&&c)try{await h(o,{},c)}catch(e){}let r=i;m(),i=null,R&&R()}finally{f=!1}}async function x(r){if(!a)throw new Error("\u672A\u914D\u7F6E registerUrl\uFF0C\u65E0\u6CD5\u6CE8\u518C");f=!0;try{return await h(a,r,null)}finally{f=!1}}async function G(){var r;if(!p)throw new Error("\u672A\u914D\u7F6E refreshTokenUrl\uFF0C\u65E0\u6CD5\u5237\u65B0 Token");if(!c)return null;f=!0;try{let e=await h(p,{},c),u=(e==null?void 0:e.token)||(e==null?void 0:e.access_token)||((r=e==null?void 0:e.data)==null?void 0:r.token)||null;return u&&(d(u),U&&U(u)),u}catch(e){throw b&&e instanceof Error&&b(e),m(),i=null,e}finally{f=!1}}function B(r){if(!i)return!1;let e=i.roles||i.role||[];return Array.isArray(e)?e.includes(r):typeof e=="string"?e.split(",").map(u=>u.trim()).includes(r):!1}function J(r){if(!i)return!1;let e=i.permissions||i.perms||[];return Array.isArray(e)?e.includes(r):typeof e=="string"?e.split(",").map(u=>u.trim()).includes(r):!1}function K(r){!r||typeof r.beforeEach!="function"||r.beforeEach((e,u,n)=>{var S;let g=((S=e.meta)==null?void 0:S.requiresAuth)!==!1,N=e.path===v;if(E()){if(N){n(I);return}n();return}if(g&&q){n({path:v,query:{redirect:e.fullPath}});return}g&&A&&A(),n()})}let k={install(r,e){r.config=r.config||{},r.config.globalProperties=r.config.globalProperties||{},r.config.globalProperties.$auth=k,typeof r.provide=="function"&&r.provide("auth",k)},get user(){return i},get isAuthenticated(){return E()},get token(){return c},get loading(){return f},login:$,logout:z,register:x,fetchUser:L,getToken:_,setToken:d,removeToken:m,hasRole:B,hasPermission:J,refreshToken:G,setupRouterGuard:K};return k}
1
+ "use strict";var p=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var D=(s,t)=>{for(var o in t)p(s,o,{get:t[o],enumerable:!0})},F=(s,t,o,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of C(t))!H.call(s,a)&&a!==o&&p(s,a,{get:()=>t[a],enumerable:!(u=j(t,a))||u.enumerable});return s};var M=s=>F(p({},"__esModule",{value:!0}),s);var W={};D(W,{createAuth:()=>V});module.exports=M(W);async function O(s,t={}){let o=await fetch(s,{headers:{"Content-Type":"application/json",...t.headers},...t});if(!o.ok){let a=await o.text().catch(()=>"\u8BF7\u6C42\u5931\u8D25");throw new Error(`HTTP ${o.status}: ${a}`)}let u=await o.text();if(!u)return null;try{return JSON.parse(u)}catch(a){return u}}async function Q(s,t){let o={};return t&&(o.Authorization=`Bearer ${t}`),O(s,{method:"GET",headers:o})}async function h(s,t,o){let u={};return o&&(u.Authorization=`Bearer ${o}`),O(s,{method:"POST",headers:u,body:JSON.stringify(t)})}function V(s){let{loginUrl:t,logoutUrl:o,userUrl:u,registerUrl:a,refreshTokenUrl:A,tokenKey:y="lyt_token",autoRedirect:q=!1,loginRoute:w="/login",homeRoute:I="/",onLoginSuccess:T,onLoginError:P,onLogout:v,onUnauthorized:U,onTokenRefreshed:R,onTokenRefreshError:b}=s,i=null,c=null,f=!1;try{let r=localStorage.getItem(y);r&&(c=r)}catch(r){}function E(){return!!c}function _(){return c}function d(r){c=r;try{localStorage.setItem(y,r)}catch(n){}}function k(){c=null;try{localStorage.removeItem(y)}catch(r){}}async function L(){if(!u)return i;f=!0;try{return i=await Q(u,c),i}catch(r){throw i=null,r}finally{f=!1}}async function $(r){var n,l;f=!0;try{let e=await h(t,r,null),g=(e==null?void 0:e.token)||(e==null?void 0:e.access_token)||((n=e==null?void 0:e.data)==null?void 0:n.token)||null;return g&&d(g),u?await L():(e!=null&&e.user||(l=e==null?void 0:e.data)!=null&&l.user)&&(i=e.user||e.data.user),T&&T(i),{user:i,token:g}}catch(e){throw P&&e instanceof Error&&P(e),e}finally{f=!1}}async function z(){f=!0;try{if(o&&c)try{await h(o,{},c)}catch(n){}let r=i;k(),i=null,v&&v()}finally{f=!1}}async function x(r){if(!a)throw new Error("\u672A\u914D\u7F6E registerUrl\uFF0C\u65E0\u6CD5\u6CE8\u518C");f=!0;try{return await h(a,r,null)}finally{f=!1}}async function G(){var r;if(!A)throw new Error("\u672A\u914D\u7F6E refreshTokenUrl\uFF0C\u65E0\u6CD5\u5237\u65B0 Token");if(!c)return null;f=!0;try{let n=await h(A,{},c),l=(n==null?void 0:n.token)||(n==null?void 0:n.access_token)||((r=n==null?void 0:n.data)==null?void 0:r.token)||null;return l&&(d(l),R&&R(l)),l}catch(n){throw b&&n instanceof Error&&b(n),k(),i=null,n}finally{f=!1}}function B(r){if(!i)return!1;let n=i.roles||i.role||[];return Array.isArray(n)?n.includes(r):typeof n=="string"?n.split(",").map(l=>l.trim()).includes(r):!1}function J(r){if(!i)return!1;let n=i.permissions||i.perms||[];return Array.isArray(n)?n.includes(r):typeof n=="string"?n.split(",").map(l=>l.trim()).includes(r):!1}function K(r){!r||typeof r.beforeEach!="function"||r.beforeEach((n,l,e)=>{var S;let g=((S=n.meta)==null?void 0:S.requiresAuth)!==!1,N=n.path===w;if(E()){if(N){e(I);return}e();return}if(g&&q){e({path:w,query:{redirect:n.fullPath}});return}g&&U&&U(),e()})}let m={install(r,n){r.config=r.config||{},r.config.globalProperties=r.config.globalProperties||{},r.config.globalProperties.$auth=m,typeof r.provide=="function"&&r.provide("auth",m)},get user(){return i},get isAuthenticated(){return E()},get token(){return c},get loading(){return f},login:$,logout:z,register:x,fetchUser:L,getToken:_,setToken:d,removeToken:k,hasRole:B,hasPermission:J,refreshToken:G,setupRouterGuard:K};return m}
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- async function S(c,a={}){let o=await fetch(c,{headers:{"Content-Type":"application/json",...a.headers},...a});if(!o.ok){let g=await o.text().catch(()=>"\u8BF7\u6C42\u5931\u8D25");throw new Error(`HTTP ${o.status}: ${g}`)}let u=await o.text();if(!u)return null;try{return JSON.parse(u)}catch(g){return u}}async function N(c,a){let o={};return a&&(o.Authorization=`Bearer ${a}`),S(c,{method:"GET",headers:o})}async function h(c,a,o){let u={};return o&&(u.Authorization=`Bearer ${o}`),S(c,{method:"POST",headers:u,body:JSON.stringify(a)})}function j(c){let{loginUrl:a,logoutUrl:o,userUrl:u,registerUrl:g,refreshTokenUrl:T,tokenKey:y="lyt_token",autoRedirect:O=!1,loginRoute:p="/login",homeRoute:q="/",onLoginSuccess:v,onLoginError:P,onLogout:w,onUnauthorized:R,onTokenRefreshed:A,onTokenRefreshError:U}=c,t=null,s=null,l=!1;try{let r=localStorage.getItem(y);r&&(s=r)}catch(r){}function b(){return!!s}function I(){return s}function d(r){s=r;try{localStorage.setItem(y,r)}catch(e){}}function m(){s=null;try{localStorage.removeItem(y)}catch(r){}}async function E(){if(!u)return t;l=!0;try{return t=await N(u,s),t}catch(r){throw t=null,r}finally{l=!1}}async function _(r){var e,i;l=!0;try{let n=await h(a,r,null),f=(n==null?void 0:n.token)||(n==null?void 0:n.access_token)||((e=n==null?void 0:n.data)==null?void 0:e.token)||null;return f&&d(f),u?await E():(n!=null&&n.user||(i=n==null?void 0:n.data)!=null&&i.user)&&(t=n.user||n.data.user),v&&v(t),{user:t,token:f}}catch(n){throw P&&n instanceof Error&&P(n),n}finally{l=!1}}async function $(){l=!0;try{if(o&&s)try{await h(o,{},s)}catch(e){}let r=t;m(),t=null,w&&w()}finally{l=!1}}async function z(r){if(!g)throw new Error("\u672A\u914D\u7F6E registerUrl\uFF0C\u65E0\u6CD5\u6CE8\u518C");l=!0;try{return await h(g,r,null)}finally{l=!1}}async function x(){var r;if(!T)throw new Error("\u672A\u914D\u7F6E refreshTokenUrl\uFF0C\u65E0\u6CD5\u5237\u65B0 Token");if(!s)return null;l=!0;try{let e=await h(T,{},s),i=(e==null?void 0:e.token)||(e==null?void 0:e.access_token)||((r=e==null?void 0:e.data)==null?void 0:r.token)||null;return i&&(d(i),A&&A(i)),i}catch(e){throw U&&e instanceof Error&&U(e),m(),t=null,e}finally{l=!1}}function G(r){if(!t)return!1;let e=t.roles||t.role||[];return Array.isArray(e)?e.includes(r):typeof e=="string"?e.split(",").map(i=>i.trim()).includes(r):!1}function B(r){if(!t)return!1;let e=t.permissions||t.perms||[];return Array.isArray(e)?e.includes(r):typeof e=="string"?e.split(",").map(i=>i.trim()).includes(r):!1}function J(r){!r||typeof r.beforeEach!="function"||r.beforeEach((e,i,n)=>{var L;let f=((L=e.meta)==null?void 0:L.requiresAuth)!==!1,K=e.path===p;if(b()){if(K){n(q);return}n();return}if(f&&O){n({path:p,query:{redirect:e.fullPath}});return}f&&R&&R(),n()})}let k={install(r,e){r.config=r.config||{},r.config.globalProperties=r.config.globalProperties||{},r.config.globalProperties.$auth=k,typeof r.provide=="function"&&r.provide("auth",k)},get user(){return t},get isAuthenticated(){return b()},get token(){return s},get loading(){return l},login:_,logout:$,register:z,fetchUser:E,getToken:I,setToken:d,removeToken:m,hasRole:G,hasPermission:B,refreshToken:x,setupRouterGuard:J};return k}export{j as createAuth};
1
+ async function S(c,a={}){let o=await fetch(c,{headers:{"Content-Type":"application/json",...a.headers},...a});if(!o.ok){let g=await o.text().catch(()=>"\u8BF7\u6C42\u5931\u8D25");throw new Error(`HTTP ${o.status}: ${g}`)}let l=await o.text();if(!l)return null;try{return JSON.parse(l)}catch(g){return l}}async function N(c,a){let o={};return a&&(o.Authorization=`Bearer ${a}`),S(c,{method:"GET",headers:o})}async function h(c,a,o){let l={};return o&&(l.Authorization=`Bearer ${o}`),S(c,{method:"POST",headers:l,body:JSON.stringify(a)})}function j(c){let{loginUrl:a,logoutUrl:o,userUrl:l,registerUrl:g,refreshTokenUrl:p,tokenKey:y="lyt_token",autoRedirect:O=!1,loginRoute:A="/login",homeRoute:q="/",onLoginSuccess:w,onLoginError:T,onLogout:P,onUnauthorized:v,onTokenRefreshed:U,onTokenRefreshError:R}=c,t=null,s=null,u=!1;try{let r=localStorage.getItem(y);r&&(s=r)}catch(r){}function b(){return!!s}function I(){return s}function d(r){s=r;try{localStorage.setItem(y,r)}catch(n){}}function k(){s=null;try{localStorage.removeItem(y)}catch(r){}}async function E(){if(!l)return t;u=!0;try{return t=await N(l,s),t}catch(r){throw t=null,r}finally{u=!1}}async function _(r){var n,i;u=!0;try{let e=await h(a,r,null),f=(e==null?void 0:e.token)||(e==null?void 0:e.access_token)||((n=e==null?void 0:e.data)==null?void 0:n.token)||null;return f&&d(f),l?await E():(e!=null&&e.user||(i=e==null?void 0:e.data)!=null&&i.user)&&(t=e.user||e.data.user),w&&w(t),{user:t,token:f}}catch(e){throw T&&e instanceof Error&&T(e),e}finally{u=!1}}async function $(){u=!0;try{if(o&&s)try{await h(o,{},s)}catch(n){}let r=t;k(),t=null,P&&P()}finally{u=!1}}async function z(r){if(!g)throw new Error("\u672A\u914D\u7F6E registerUrl\uFF0C\u65E0\u6CD5\u6CE8\u518C");u=!0;try{return await h(g,r,null)}finally{u=!1}}async function x(){var r;if(!p)throw new Error("\u672A\u914D\u7F6E refreshTokenUrl\uFF0C\u65E0\u6CD5\u5237\u65B0 Token");if(!s)return null;u=!0;try{let n=await h(p,{},s),i=(n==null?void 0:n.token)||(n==null?void 0:n.access_token)||((r=n==null?void 0:n.data)==null?void 0:r.token)||null;return i&&(d(i),U&&U(i)),i}catch(n){throw R&&n instanceof Error&&R(n),k(),t=null,n}finally{u=!1}}function G(r){if(!t)return!1;let n=t.roles||t.role||[];return Array.isArray(n)?n.includes(r):typeof n=="string"?n.split(",").map(i=>i.trim()).includes(r):!1}function B(r){if(!t)return!1;let n=t.permissions||t.perms||[];return Array.isArray(n)?n.includes(r):typeof n=="string"?n.split(",").map(i=>i.trim()).includes(r):!1}function J(r){!r||typeof r.beforeEach!="function"||r.beforeEach((n,i,e)=>{var L;let f=((L=n.meta)==null?void 0:L.requiresAuth)!==!1,K=n.path===A;if(b()){if(K){e(q);return}e();return}if(f&&O){e({path:A,query:{redirect:n.fullPath}});return}f&&v&&v(),e()})}let m={install(r,n){r.config=r.config||{},r.config.globalProperties=r.config.globalProperties||{},r.config.globalProperties.$auth=m,typeof r.provide=="function"&&r.provide("auth",m)},get user(){return t},get isAuthenticated(){return b()},get token(){return s},get loading(){return u},login:_,logout:$,register:z,fetchUser:E,getToken:I,setToken:d,removeToken:k,hasRole:G,hasPermission:B,refreshToken:x,setupRouterGuard:J};return m}export{j as createAuth};
@@ -31,12 +31,25 @@ interface AuthOptions {
31
31
  /** Token 刷新失败回调 */
32
32
  onTokenRefreshError?: (error: Error) => void;
33
33
  }
34
+ /** 认证插件应用接口(最小化) */
35
+ interface AuthPluginApp {
36
+ use(plugin: unknown, options?: unknown): void;
37
+ [key: string]: unknown;
38
+ }
39
+ /** 认证用户信息 */
40
+ interface AuthUser {
41
+ id: string | number;
42
+ name: string;
43
+ email?: string;
44
+ role?: string;
45
+ [key: string]: unknown;
46
+ }
34
47
  /** 认证插件实例 */
35
48
  interface Auth {
36
49
  /** 安装到 Lyt 应用 */
37
- install: (app: any, options?: any) => void;
50
+ install: (app: AuthPluginApp, options?: AuthOptions) => void;
38
51
  /** 当前用户信息 */
39
- user: any | null;
52
+ user: AuthUser | null;
40
53
  /** 是否已认证 */
41
54
  isAuthenticated: boolean;
42
55
  /** 当前 token */
@@ -44,13 +57,13 @@ interface Auth {
44
57
  /** 是否正在加载中 */
45
58
  loading: boolean;
46
59
  /** 登录 */
47
- login(credentials: Record<string, any>): Promise<any>;
60
+ login(credentials: Record<string, unknown>): Promise<AuthUser>;
48
61
  /** 登出 */
49
62
  logout(): Promise<void>;
50
63
  /** 注册 */
51
- register(data: Record<string, any>): Promise<any>;
64
+ register(data: Record<string, unknown>): Promise<AuthUser>;
52
65
  /** 获取当前用户信息 */
53
- fetchUser(): Promise<any>;
66
+ fetchUser(): Promise<AuthUser>;
54
67
  /** 获取 token */
55
68
  getToken(): string | null;
56
69
  /** 设置 token */
@@ -64,7 +77,7 @@ interface Auth {
64
77
  /** 刷新 Token */
65
78
  refreshToken(): Promise<string | null>;
66
79
  /** 设置路由守卫,自动检查登录状态 */
67
- setupRouterGuard(router: any): void;
80
+ setupRouterGuard(router: Record<string, unknown>): void;
68
81
  }
69
82
  /**
70
83
  * 创建认证授权插件实例
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAsBA,aAAa;AACb,UAAU,WAAW;IACnB,aAAa;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mBAAmB;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB;IACrB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,cAAc;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa;IACb,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IACpC,aAAa;IACb,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACrC,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,mBAAmB;IACnB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,mBAAmB;IACnB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,mBAAmB;IACnB,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CAC7C;AAED,aAAa;AACb,UAAU,IAAI;IACZ,iBAAiB;IACjB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;IAC1C,aAAa;IACb,IAAI,EAAE,GAAG,GAAG,IAAI,CAAA;IAChB,YAAY;IACZ,eAAe,EAAE,OAAO,CAAA;IACxB,eAAe;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,cAAc;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS;IACT,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACrD,SAAS;IACT,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACvB,SAAS;IACT,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACjD,eAAe;IACf,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA;IACzB,eAAe;IACf,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe;IACf,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,eAAe;IACf,WAAW,IAAI,IAAI,CAAA;IACnB,mBAAmB;IACnB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAC9B,mBAAmB;IACnB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IACpC,eAAe;IACf,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACtC,sBAAsB;IACtB,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAA;CACpC;AA+DD;;;;GAIG;AACH,iBAAS,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAsU9C;AAED,OAAO,EAAE,UAAU,EAAE,CAAA;AACrB,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lytjs/plugin-auth",
3
- "version": "4.2.0",
3
+ "version": "5.0.1",
4
4
  "description": "Lyt.js 认证授权插件 - 提供登录、权限校验、路由守卫等认证功能",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",