Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wiki-js
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
wiki-js
Commits
3caa842d
Commit
3caa842d
authored
Oct 12, 2018
by
Nicolas Giard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: auth advanced settings UI + reload auth on save
parent
aa08459d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
53 additions
and
17 deletions
+53
-17
admin-auth.vue
client/components/admin/admin-auth.vue
+49
-14
auth.js
server/core/auth.js
+1
-1
authentication.js
server/graph/resolvers/authentication.js
+1
-0
auth.js
server/middlewares/auth.js
+2
-2
No files found.
client/components/admin/admin-auth.vue
View file @
3caa842d
...
...
@@ -20,19 +20,51 @@
v-tab(v-for='strategy in activeStrategies', :key='strategy.key')
{{
strategy
.
title
}}
v-tab-item(key='settings', :transition='false', :reverse-transition='false')
v-card.pa-3(flat, tile)
.body-2.grey--text.text--darken-1 Select which authentication strategies to enable:
.caption.grey--text.pb-2 Some strategies require additional configuration in their dedicated tab (when selected).
v-form
v-checkbox.my-0(
v-for='strategy in strategies'
v-model='strategy.isEnabled'
:key='strategy.key'
:label='strategy.title'
color='primary'
:disabled='strategy.key === `local`'
hide-details
)
v-container.pa-3(fluid, grid-list-md)
v-layout(row, wrap)
v-flex(xs12, md6)
.body-2.grey--text.text--darken-1 Select which authentication strategies to enable:
.caption.grey--text.pb-2 Some strategies require additional configuration in their dedicated tab (when selected).
v-form
v-checkbox.my-0(
v-for='strategy in strategies'
v-model='strategy.isEnabled'
:key='strategy.key'
:label='strategy.title'
color='primary'
:disabled='strategy.key === `local`'
hide-details
)
v-flex(xs12, md6)
.pa-3.grey.radius-7(:class='$vuetify.dark ? "darken-4" : "lighten-5"')
.body-2.grey--text.text--darken-1 Advanced Settings
v-text-field.mt-3.md2(
v-model='jwtAudience'
outline
background-color='grey lighten-2'
prepend-icon='account_balance'
label='JWT Audience'
hint='Audience URN used in JWT issued upon login. Usually your domain name. (e.g. urn:your.domain.com)'
persistent-hint
)
v-text-field.mt-3.md2(
v-model='jwtExpiration'
outline
background-color='grey lighten-2'
prepend-icon='schedule'
label='Token Expiration'
hint='The expiration period of a token until it must be renewed. (default: 30m)'
persistent-hint
)
v-text-field.mt-3.md2(
v-model='jwtRenewablePeriod'
outline
background-color='grey lighten-2'
prepend-icon='update'
label='Token Renewal Period'
hint='The maximum period a token can be renewed when expired. (default: 14d)'
persistent-hint
)
v-tab-item(v-for='(strategy, n) in activeStrategies', :key='strategy.key', :transition='false', :reverse-transition='false')
v-card.pa-3(flat, tile)
...
...
@@ -135,7 +167,10 @@ export default {
data
()
{
return
{
groups
:
[],
strategies
:
[]
strategies
:
[],
jwtAudience
:
'urn:wiki.js'
,
jwtExpiration
:
'30m'
,
jwtRenewablePeriod
:
'14d'
}
},
computed
:
{
...
...
server/core/auth.js
View file @
3caa842d
...
...
@@ -73,7 +73,7 @@ module.exports = {
}
})
WIKI
.
auth
.
strategies
[
stg
.
key
]
=
strategy
WIKI
.
logger
.
info
(
`Authentication Strategy
${
stg
.
title
}
: [ OK ]`
)
WIKI
.
logger
.
info
(
`Authentication Strategy
${
stg
.
key
}
: [ OK ]`
)
}
}
catch
(
err
)
{
WIKI
.
logger
.
error
(
`Authentication Strategy: [ FAILED ]`
)
...
...
server/graph/resolvers/authentication.js
View file @
3caa842d
...
...
@@ -72,6 +72,7 @@ module.exports = {
autoEnrollGroups
:
{
v
:
str
.
autoEnrollGroups
}
}).
where
(
'key'
,
str
.
key
)
}
await
WIKI
.
auth
.
activateStrategies
()
return
{
responseResult
:
graphHelper
.
generateSuccess
(
'Strategies updated successfully'
)
}
...
...
server/middlewares/auth.js
View file @
3caa842d
...
...
@@ -14,7 +14,7 @@ module.exports = {
if
(
err
)
{
return
next
()
}
// Expired but still valid within 7 days, just renew
if
(
info
instanceof
jwt
.
TokenExpiredError
&&
moment
().
subtract
(
7
,
'days'
).
isBefore
(
info
.
expiredAt
))
{
if
(
info
instanceof
jwt
.
TokenExpiredError
&&
moment
().
subtract
(
14
,
'days'
).
isBefore
(
info
.
expiredAt
))
{
const
jwtPayload
=
jwt
.
decode
(
securityHelper
.
extractJWT
(
req
))
try
{
const
newToken
=
await
WIKI
.
models
.
users
.
refreshToken
(
jwtPayload
.
id
)
...
...
@@ -24,7 +24,7 @@ module.exports = {
if
(
req
.
get
(
'content-type'
)
===
'application/json'
)
{
res
.
headers
(
'new-jwt'
,
newToken
.
token
)
}
else
{
res
.
cookie
(
'jwt'
,
newToken
.
token
,
{
expires
:
moment
().
add
(
7
,
'days'
).
toDate
()
})
res
.
cookie
(
'jwt'
,
newToken
.
token
,
{
expires
:
moment
().
add
(
365
,
'days'
).
toDate
()
})
}
}
catch
(
err
)
{
return
next
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment