@nitra/vite-boot 3.1.0 → 3.1.2

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