-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathTokenController.ts
More file actions
133 lines (108 loc) · 3.43 KB
/
TokenController.ts
File metadata and controls
133 lines (108 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import { BasicQueryStringUtils } from '@openid/appauth'
type GenericRecord = Record<string, unknown>
type AdditionalActionData = GenericRecord & {
modifiedFields?: unknown
performedOn?: unknown
}
type AdditionalPayload = GenericRecord & {
action?: {
action_message?: string
action_data?: AdditionalActionData
}
action_message?: string
message?: string
modifiedFields?: unknown
performedOn?: unknown
tableData?: unknown
omitPayload?: boolean
}
export const isFourZeroOneError = (error?: { status?: number } | null): boolean => {
return error?.status === 401
}
export const hasApiToken = (): boolean => {
return Boolean(localStorage.getItem('gluu.api.token'))
}
export const saveState = (state?: string | null): void => {
if (state) {
localStorage.setItem('gluu.flow.state', state)
}
}
export const saveIssuer = (issuer: string): void => {
localStorage.setItem('issuer', issuer)
}
export const getIssuer = (): string | null => {
return localStorage.getItem('issuer')
}
export const isValidState = (newState?: string | null): boolean => {
return localStorage.getItem('gluu.flow.state') === newState
}
export const addAdditionalData = (
audit: GenericRecord,
action: string,
resource: string,
payload: AdditionalPayload = {},
): void => {
const sanitizedPayload: AdditionalPayload = { ...payload }
if (payload.action) {
sanitizedPayload.action = { ...payload.action }
if (payload.action.action_data) {
sanitizedPayload.action.action_data = { ...payload.action.action_data }
}
}
const shouldOmitPayload = Boolean(sanitizedPayload.omitPayload)
if ('omitPayload' in sanitizedPayload) {
delete sanitizedPayload.omitPayload
}
audit.action = action
audit.resource = resource
const message =
sanitizedPayload.action?.action_message ??
sanitizedPayload.action_message ??
sanitizedPayload.message
if (message !== undefined) {
audit.message = message
}
const actionData = sanitizedPayload.action?.action_data
if (actionData?.modifiedFields !== undefined || sanitizedPayload.modifiedFields !== undefined) {
audit.modifiedFields =
actionData?.modifiedFields !== undefined
? actionData.modifiedFields
: sanitizedPayload.modifiedFields
}
if (actionData?.performedOn !== undefined || sanitizedPayload.performedOn !== undefined) {
audit.performedOn =
actionData?.performedOn !== undefined ? actionData.performedOn : sanitizedPayload.performedOn
}
if (actionData) {
if ('modifiedFields' in actionData) {
delete actionData.modifiedFields
}
if ('performedOn' in actionData) {
delete actionData.performedOn
}
}
if ('modifiedFields' in sanitizedPayload) {
delete sanitizedPayload.modifiedFields
}
if ('performedOn' in sanitizedPayload) {
delete sanitizedPayload.performedOn
}
if ('action_message' in sanitizedPayload) {
delete sanitizedPayload.action_message
}
if ('tableData' in sanitizedPayload) {
delete sanitizedPayload.tableData
}
if (!shouldOmitPayload) {
audit.payload = sanitizedPayload.action ? sanitizedPayload.action.action_data : sanitizedPayload
}
audit.date = new Date()
}
export class NoHashQueryStringUtils extends BasicQueryStringUtils {
parse(
input: Parameters<BasicQueryStringUtils['parse']>[0],
_useHash?: Parameters<BasicQueryStringUtils['parse']>[1],
): ReturnType<BasicQueryStringUtils['parse']> {
return super.parse(input, false)
}
}