@nitra/vite-boot 3.1.1 → 3.1.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nitra/vite-boot",
3
- "version": "3.1.1",
3
+ "version": "3.1.3",
4
4
  "description": "Vite boot",
5
5
  "type": "module",
6
6
  "exports": {
@@ -9,7 +9,8 @@
9
9
  "./sentry": "./src/sentry.js",
10
10
  "./token": "./src/token.js",
11
11
  "./login": "./src/login.js",
12
- "./user": "./src/user.js"
12
+ "./user": "./src/user.js",
13
+ "./router": "./src/router.js"
13
14
  },
14
15
  "repository": {
15
16
  "type": "git",
package/src/apollo.js CHANGED
@@ -5,7 +5,7 @@ import { createLogger } from '@nitra/consola'
5
5
  import { GraphQLWsLink } from '@apollo/client/link/subscriptions'
6
6
  import { checkToken, refreshToken, getToken } from './token.js'
7
7
  import { user } from './user.js'
8
- import { router } from 'src/njs/boot/router.js'
8
+ import { router } from './router.js'
9
9
 
10
10
  const consola = createLogger(import.meta.url)
11
11
 
package/src/login.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { checkToken } from './token.js'
2
2
  import { setUser } from './user.js'
3
- import { router } from 'src/njs/boot/router.js'
3
+ import { router } from './router.js'
4
4
 
5
5
  /**
6
6
  * Автоматичний вхід користувача
package/src/router.js ADDED
@@ -0,0 +1,77 @@
1
+ import { getToken, checkToken } from './token.js'
2
+ import { user, setUser } from './user.js'
3
+ import { createLogger } from '@nitra/consola'
4
+
5
+ export let router
6
+
7
+ const consola = createLogger(import.meta.url)
8
+
9
+ export function setRouter(r) {
10
+ router = r
11
+
12
+ consola.debug('End Router boot')
13
+ }
14
+
15
+ export function canUserAccess(to) {
16
+ // Якщо сторінка без обмеження по ролям то дозволяємо завжди
17
+ if (to.meta?.layout === 404 || to.meta?.layout === 'blank') {
18
+ return true
19
+ }
20
+
21
+ // Якщо є обмеження на сторінці по ролям
22
+ const token = getToken()
23
+ if (!token) {
24
+ // Записуємо поточний урл в session storage
25
+ // щоб потім на нього повернути після логіну
26
+ sessionStorage.setItem('url-before-logout', to.pathname)
27
+ return false
28
+ }
29
+ // Якщо перший раз запускаємо - завантажуємо користувача
30
+ if (!user.role) {
31
+ const check = checkToken(token)
32
+ if (check.result === 'ok') {
33
+ setUser(check.decoded)
34
+ } else {
35
+ return false
36
+ }
37
+ }
38
+
39
+ if (to.meta?.roles.some(x => x === user.role)) {
40
+ return true
41
+ }
42
+
43
+ return false
44
+ }
45
+
46
+ export function canUserAccessMetaRoles(to) {
47
+ // Якщо сторінка без обмеження по ролям то дозволяємо завжди
48
+ if (to.meta?.layout === 404 || to.meta?.layout === 'blank' || !to.meta?.roles) {
49
+ return true
50
+ }
51
+
52
+ // Якщо є обмеження на сторінці по ролям
53
+ const token = getToken()
54
+
55
+ // Якщо токен є, то можна любі сторінки
56
+ if (!token) {
57
+ return false
58
+ }
59
+ // Якщо перший раз запускаємо - завантажуємо користувача
60
+ if (!user.role) {
61
+ const check = checkToken(token)
62
+ if (check.result === 'ok') {
63
+ setUser(check.decoded)
64
+ } else {
65
+ return false
66
+ }
67
+ }
68
+
69
+ // Якщо токена немає, та є обмеження на сторінкі
70
+ // то забороняємо доступ
71
+ // if (to.meta?.roles.length > 0) {
72
+ // return false
73
+ // }
74
+
75
+ // Не пройшло обмеження по ролям
76
+ return true
77
+ }
package/src/sentry.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import * as Sentry from '@sentry/vue'
2
2
  import { Integrations } from '@sentry/tracing'
3
+ import { router } from './router.js'
3
4
 
4
5
  /**
5
6
  * Ініціалізація Sentry
6
7
  */
7
- export const bootSentry = (app, router, tracing = 0) => {
8
+ export const bootSentry = (app, tracing = 0) => {
8
9
  const options = {
9
10
  app,
10
11
  dsn: import.meta.env.VITE_SENTRY,
package/src/token.js CHANGED
@@ -88,7 +88,7 @@ export async function refreshToken() {
88
88
  // перезавантажуємо щоб він вступив в дію
89
89
  wsClient.restart()
90
90
  } else {
91
- await defaultLogin(check.decoded, router)
91
+ await defaultLogin(check.decoded)
92
92
  }
93
93
  }
94
94
  }