@nitra/vite-boot 3.1.1 → 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 +3 -2
- package/src/apollo.js +1 -1
- package/src/login.js +1 -1
- package/src/router.js +76 -0
- package/src/sentry.js +2 -1
- package/src/token.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nitra/vite-boot",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.2",
|
|
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 '
|
|
8
|
+
import { router } from './router.js'
|
|
9
9
|
|
|
10
10
|
const consola = createLogger(import.meta.url)
|
|
11
11
|
|
package/src/login.js
CHANGED
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,
|
|
8
|
+
export const bootSentry = (app, tracing = 0) => {
|
|
8
9
|
const options = {
|
|
9
10
|
app,
|
|
10
11
|
dsn: import.meta.env.VITE_SENTRY,
|