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
2020e457
Commit
2020e457
authored
Jul 30, 2017
by
NGPixel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: modular auth + logging changes
parent
f3242932
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
68 additions
and
79 deletions
+68
-79
azure.js
server/authentication/azure.js
+6
-8
facebook.js
server/authentication/facebook.js
+4
-6
github.js
server/authentication/github.js
+4
-6
google.js
server/authentication/google.js
+4
-6
ldap.js
server/authentication/ldap.js
+9
-10
local.js
server/authentication/local.js
+1
-3
microsoft.js
server/authentication/microsoft.js
+4
-6
slack.js
server/authentication/slack.js
+4
-6
uploads.js
server/controllers/uploads.js
+3
-0
master.js
server/master.js
+3
-3
auth.js
server/modules/auth.js
+22
-6
config.js
server/modules/config.js
+0
-11
db.js
server/modules/db.js
+1
-1
disk.js
server/modules/disk.js
+1
-3
git.js
server/modules/git.js
+2
-4
No files found.
server/authentication/azure.js
View file @
2020e457
...
...
@@ -8,16 +8,15 @@
const
AzureAdOAuth2Strategy
=
require
(
'passport-azure-ad-oauth2'
).
Strategy
module
.
exports
=
(
passport
)
=>
{
if
(
wiki
.
config
.
auth
.
azure
&&
wiki
.
config
.
auth
.
azure
.
enabled
)
{
module
.
exports
=
(
passport
,
conf
)
=>
{
const
jwt
=
require
(
'jsonwebtoken'
)
passport
.
use
(
'azure_ad_oauth2'
,
new
AzureAdOAuth2Strategy
({
clientID
:
wiki
.
config
.
auth
.
azure
.
clientId
,
clientSecret
:
wiki
.
config
.
auth
.
azure
.
clientSecret
,
callbackURL
:
wiki
.
config
.
host
+
'/login/azure/callback'
,
resource
:
wiki
.
config
.
auth
.
azure
.
resource
,
tenant
:
wiki
.
config
.
auth
.
azure
.
tenant
clientID
:
conf
.
clientId
,
clientSecret
:
conf
.
clientSecret
,
callbackURL
:
conf
.
callbackURL
,
resource
:
conf
.
resource
,
tenant
:
conf
.
tenant
},
(
accessToken
,
refreshToken
,
params
,
profile
,
cb
)
=>
{
let
waadProfile
=
jwt
.
decode
(
params
.
id_token
)
waadProfile
.
id
=
waadProfile
.
oid
...
...
@@ -29,5 +28,4 @@ module.exports = (passport) => {
})
}
))
}
}
server/authentication/facebook.js
View file @
2020e457
...
...
@@ -8,13 +8,12 @@
const
FacebookStrategy
=
require
(
'passport-facebook'
).
Strategy
module
.
exports
=
(
passport
)
=>
{
if
(
wiki
.
config
.
auth
.
facebook
&&
wiki
.
config
.
auth
.
facebook
.
enabled
)
{
module
.
exports
=
(
passport
,
conf
)
=>
{
passport
.
use
(
'facebook'
,
new
FacebookStrategy
({
clientID
:
wiki
.
config
.
auth
.
facebook
.
clientId
,
clientSecret
:
wiki
.
config
.
auth
.
facebook
.
clientSecret
,
callbackURL
:
wiki
.
config
.
host
+
'/login/facebook/callback'
,
clientID
:
conf
.
clientId
,
clientSecret
:
conf
.
clientSecret
,
callbackURL
:
conf
.
callbackURL
,
profileFields
:
[
'id'
,
'displayName'
,
'email'
]
},
function
(
accessToken
,
refreshToken
,
profile
,
cb
)
{
wiki
.
db
.
User
.
processProfile
(
profile
).
then
((
user
)
=>
{
...
...
@@ -24,5 +23,4 @@ module.exports = (passport) => {
})
}
))
}
}
server/authentication/github.js
View file @
2020e457
...
...
@@ -8,13 +8,12 @@
const
GitHubStrategy
=
require
(
'passport-github2'
).
Strategy
module
.
exports
=
(
passport
)
=>
{
if
(
wiki
.
config
.
auth
.
github
&&
wiki
.
config
.
auth
.
github
.
enabled
)
{
module
.
exports
=
(
passport
,
conf
)
=>
{
passport
.
use
(
'github'
,
new
GitHubStrategy
({
clientID
:
wiki
.
config
.
auth
.
github
.
clientId
,
clientSecret
:
wiki
.
config
.
auth
.
github
.
clientSecret
,
callbackURL
:
wiki
.
config
.
host
+
'/login/github/callback'
,
clientID
:
conf
.
clientId
,
clientSecret
:
conf
.
clientSecret
,
callbackURL
:
conf
.
callbackURL
,
scope
:
[
'user:email'
]
},
(
accessToken
,
refreshToken
,
profile
,
cb
)
=>
{
wiki
.
db
.
User
.
processProfile
(
profile
).
then
((
user
)
=>
{
...
...
@@ -24,5 +23,4 @@ module.exports = (passport) => {
})
}
))
}
}
server/authentication/google.js
View file @
2020e457
...
...
@@ -8,13 +8,12 @@
const
GoogleStrategy
=
require
(
'passport-google-oauth20'
).
Strategy
module
.
exports
=
(
passport
)
=>
{
if
(
wiki
.
config
.
auth
.
google
&&
wiki
.
config
.
auth
.
google
.
enabled
)
{
module
.
exports
=
(
passport
,
conf
)
=>
{
passport
.
use
(
'google'
,
new
GoogleStrategy
({
clientID
:
wiki
.
config
.
auth
.
google
.
clientId
,
clientSecret
:
wiki
.
config
.
auth
.
google
.
clientSecret
,
callbackURL
:
wiki
.
config
.
host
+
'/login/google/callback'
clientID
:
conf
.
clientId
,
clientSecret
:
conf
.
clientSecret
,
callbackURL
:
conf
.
callbackURL
},
(
accessToken
,
refreshToken
,
profile
,
cb
)
=>
{
wiki
.
db
.
User
.
processProfile
(
profile
).
then
((
user
)
=>
{
return
cb
(
null
,
user
)
||
true
...
...
@@ -23,5 +22,4 @@ module.exports = (passport) => {
})
}
))
}
}
server/authentication/ldap.js
View file @
2020e457
...
...
@@ -7,21 +7,21 @@
// ------------------------------------
const
LdapStrategy
=
require
(
'passport-ldapauth'
).
Strategy
const
fs
=
require
(
'fs'
)
module
.
exports
=
(
passport
)
=>
{
if
(
wiki
.
config
.
auth
.
ldap
&&
wiki
.
config
.
auth
.
ldap
.
enabled
)
{
module
.
exports
=
(
passport
,
conf
)
=>
{
passport
.
use
(
'ldapauth'
,
new
LdapStrategy
({
server
:
{
url
:
wiki
.
config
.
auth
.
ldap
.
url
,
bindDn
:
wiki
.
config
.
auth
.
ldap
.
bindDn
,
bindCredentials
:
wiki
.
config
.
auth
.
ldap
.
bindCredentials
,
searchBase
:
wiki
.
config
.
auth
.
ldap
.
searchBase
,
searchFilter
:
wiki
.
config
.
auth
.
ldap
.
searchFilter
,
url
:
conf
.
url
,
bindDn
:
conf
.
bindDn
,
bindCredentials
:
conf
.
bindCredentials
,
searchBase
:
conf
.
searchBase
,
searchFilter
:
conf
.
searchFilter
,
searchAttributes
:
[
'displayName'
,
'name'
,
'cn'
,
'mail'
],
tlsOptions
:
(
wiki
.
config
.
auth
.
ldap
.
tlsEnabled
)
?
{
tlsOptions
:
(
conf
.
tlsEnabled
)
?
{
ca
:
[
fs
.
readFileSync
(
wiki
.
config
.
auth
.
ldap
.
tlsCertPath
)
fs
.
readFileSync
(
conf
.
tlsCertPath
)
]
}
:
{}
},
...
...
@@ -37,5 +37,4 @@ module.exports = (passport) => {
})
}
))
}
}
server/authentication/local.js
View file @
2020e457
...
...
@@ -8,8 +8,7 @@
const
LocalStrategy
=
require
(
'passport-local'
).
Strategy
module
.
exports
=
(
passport
)
=>
{
if
(
wiki
.
config
.
auth
.
local
&&
wiki
.
config
.
auth
.
local
.
enabled
)
{
module
.
exports
=
(
passport
,
conf
)
=>
{
passport
.
use
(
'local'
,
new
LocalStrategy
({
usernameField
:
'email'
,
...
...
@@ -30,5 +29,4 @@ module.exports = (passport) => {
})
}
))
}
}
server/authentication/microsoft.js
View file @
2020e457
...
...
@@ -8,13 +8,12 @@
const
WindowsLiveStrategy
=
require
(
'passport-windowslive'
).
Strategy
module
.
exports
=
(
passport
)
=>
{
if
(
wiki
.
config
.
auth
.
microsoft
&&
wiki
.
config
.
auth
.
microsoft
.
enabled
)
{
module
.
exports
=
(
passport
,
conf
)
=>
{
passport
.
use
(
'windowslive'
,
new
WindowsLiveStrategy
({
clientID
:
wiki
.
config
.
auth
.
microsoft
.
clientId
,
clientSecret
:
wiki
.
config
.
auth
.
microsoft
.
clientSecret
,
callbackURL
:
wiki
.
config
.
host
+
'/login/ms/callback'
clientID
:
conf
.
clientId
,
clientSecret
:
conf
.
clientSecret
,
callbackURL
:
conf
.
callbackURL
},
function
(
accessToken
,
refreshToken
,
profile
,
cb
)
{
wiki
.
db
.
User
.
processProfile
(
profile
).
then
((
user
)
=>
{
return
cb
(
null
,
user
)
||
true
...
...
@@ -23,5 +22,4 @@ module.exports = (passport) => {
})
}
))
}
}
server/authentication/slack.js
View file @
2020e457
...
...
@@ -8,13 +8,12 @@
const
SlackStrategy
=
require
(
'passport-slack'
).
Strategy
module
.
exports
=
(
passport
)
=>
{
if
(
wiki
.
config
.
auth
.
slack
&&
wiki
.
config
.
auth
.
slack
.
enabled
)
{
module
.
exports
=
(
passport
,
conf
)
=>
{
passport
.
use
(
'slack'
,
new
SlackStrategy
({
clientID
:
wiki
.
config
.
auth
.
slack
.
clientId
,
clientSecret
:
wiki
.
config
.
auth
.
slack
.
clientSecret
,
callbackURL
:
wiki
.
config
.
host
+
'/login/slack/callback'
clientID
:
conf
.
clientId
,
clientSecret
:
conf
.
clientSecret
,
callbackURL
:
conf
.
callbackURL
},
(
accessToken
,
refreshToken
,
profile
,
cb
)
=>
{
wiki
.
db
.
User
.
processProfile
(
profile
).
then
((
user
)
=>
{
return
cb
(
null
,
user
)
||
true
...
...
@@ -23,5 +22,4 @@ module.exports = (passport) => {
})
}
))
}
}
server/controllers/uploads.js
View file @
2020e457
...
...
@@ -2,6 +2,9 @@
/* global wiki */
module
.
exports
=
false
return
const
express
=
require
(
'express'
)
const
router
=
express
.
Router
()
...
...
server/master.js
View file @
2020e457
...
...
@@ -147,7 +147,7 @@ module.exports = Promise.join(
app
.
use
(
'/graphql'
,
graphqlApollo
.
graphqlExpress
({
schema
:
graphqlSchema
}))
app
.
use
(
'/graphiql'
,
graphqlApollo
.
graphiqlExpress
({
endpointURL
:
'/graphql'
}))
app
.
use
(
'/uploads'
,
mw
.
auth
,
ctrl
.
uploads
)
//
app.use('/uploads', mw.auth, ctrl.uploads)
app
.
use
(
'/admin'
,
mw
.
auth
,
ctrl
.
admin
)
app
.
use
(
'/'
,
mw
.
auth
,
ctrl
.
pages
)
...
...
@@ -173,7 +173,7 @@ module.exports = Promise.join(
// Start HTTP server
// ----------------------------------------
wiki
.
logger
.
info
(
'Starting HTTP/WS server on port '
+
wiki
.
config
.
port
+
'...'
)
wiki
.
logger
.
info
(
`HTTP/WS Server on port:
${
wiki
.
config
.
port
}
`
)
app
.
set
(
'port'
,
wiki
.
config
.
port
)
var
server
=
http
.
createServer
(
app
)
...
...
@@ -199,7 +199,7 @@ module.exports = Promise.join(
})
server
.
on
(
'listening'
,
()
=>
{
wiki
.
logger
.
info
(
'HTTP/WS
server started successfully! [RUNNING]
'
)
wiki
.
logger
.
info
(
'HTTP/WS
Server: RUNNING
'
)
})
// ----------------------------------------
...
...
server/modules/auth.js
View file @
2020e457
...
...
@@ -2,9 +2,9 @@
/* global wiki */
const
fs
=
require
(
'fs
'
)
const
_
=
require
(
'lodash
'
)
module
.
exports
=
function
(
passport
)
{
module
.
exports
=
(
passport
)
=>
{
// Serialization user methods
passport
.
serializeUser
(
function
(
user
,
done
)
{
...
...
@@ -24,12 +24,28 @@ module.exports = function (passport) {
})
})
//
Create users for first-time
//
Load authentication strategies
return
wiki
.
db
.
User
.
findOne
({
provider
:
'local'
,
email
:
'guest@example.com'
}).
then
((
c
)
=>
{
if
(
c
<
1
)
{
// Create guest account
wiki
.
config
.
authStrategies
=
{
list
:
_
.
pickBy
(
wiki
.
config
.
auth
,
strategy
=>
strategy
.
enabled
),
socialEnabled
:
(
_
.
chain
(
wiki
.
config
.
auth
).
omit
(
'local'
).
filter
([
'enabled'
,
true
]).
value
().
length
>
0
)
}
_
.
forOwn
(
wiki
.
config
.
authStrategies
.
list
,
(
strategyConfig
,
strategyName
)
=>
{
strategyConfig
.
callbackURL
=
`
${
wiki
.
config
.
site
.
host
}
/login/
${
strategyName
}
/callback`
require
(
`../authentication/
${
strategyName
}
`
)(
passport
,
strategyConfig
)
wiki
.
logger
.
info
(
`Authentication Provider
${
_
.
upperFirst
(
strategyName
)}
: OK`
)
})
// Create Guest account for first-time
return
wiki
.
db
.
User
.
findOne
({
where
:
{
provider
:
'local'
,
email
:
'guest@example.com'
}
}).
then
((
c
)
=>
{
if
(
c
<
1
)
{
return
wiki
.
db
.
User
.
create
({
provider
:
'local'
,
email
:
'guest@example.com'
,
...
...
server/modules/config.js
View file @
2020e457
...
...
@@ -57,17 +57,6 @@ module.exports = {
// List authentication strategies
wiki
.
config
=
appconfig
wiki
.
data
=
appdata
// List authentication strategies
// appconfig.authStrategies = {
// list: _.filter(appconfig.auth, ['enabled', true]),
// socialEnabled: (_.chain(appconfig.auth).omit('local').filter(['enabled', true]).value().length > 0)
// }
// if (appconfig.authStrategies.list.length < 1) {
// console.error(new Error('You must enable at least 1 authentication strategy!'))
// process.exit(1)
// }
},
/**
...
...
server/modules/db.js
View file @
2020e457
...
...
@@ -41,7 +41,7 @@ module.exports = {
// Attempt to connect and authenticate to DB
self
.
inst
.
authenticate
().
then
(()
=>
{
wiki
.
logger
.
info
(
'
Connected to PostgreSQL database.
'
)
wiki
.
logger
.
info
(
'
Database (PostgreSQL) connection: OK
'
)
}).
catch
(
err
=>
{
wiki
.
logger
.
error
(
'Failed to connect to MongoDB instance.'
)
return
err
...
...
server/modules/disk.js
View file @
2020e457
...
...
@@ -94,8 +94,6 @@ module.exports = {
* Creates a base directories (Synchronous).
*/
createBaseDirectories
()
{
wiki
.
logger
.
info
(
'Checking data directories...'
)
try
{
fs
.
ensureDirSync
(
path
.
resolve
(
wiki
.
ROOTPATH
,
wiki
.
config
.
paths
.
data
))
fs
.
emptyDirSync
(
path
.
resolve
(
wiki
.
ROOTPATH
,
wiki
.
config
.
paths
.
data
))
...
...
@@ -117,7 +115,7 @@ module.exports = {
wiki
.
logger
.
error
(
err
)
}
wiki
.
logger
.
info
(
'D
ata and Repository directories are OK.
'
)
wiki
.
logger
.
info
(
'D
isk Data Paths: OK
'
)
},
/**
...
...
server/modules/git.js
View file @
2020e457
...
...
@@ -71,8 +71,6 @@ module.exports = {
_initRepo
()
{
let
self
=
this
wiki
.
logger
.
info
(
'Checking Git repository...'
)
// -> Check if path is accessible
return
fs
.
mkdirAsync
(
self
.
_repo
.
path
).
catch
((
err
)
=>
{
...
...
@@ -92,7 +90,7 @@ module.exports = {
})
}).
then
(()
=>
{
if
(
wiki
.
config
.
git
===
false
)
{
wiki
.
logger
.
info
(
'Remote Git syncing is disabled. Not recommended!'
)
wiki
.
logger
.
warn
(
'Remote Git syncing is disabled. Not recommended!'
)
return
Promise
.
resolve
(
true
)
}
...
...
@@ -132,7 +130,7 @@ module.exports = {
wiki
.
logger
.
error
(
'Git remote error!'
)
throw
err
}).
then
(()
=>
{
wiki
.
logger
.
info
(
'Git
repository is OK.
'
)
wiki
.
logger
.
info
(
'Git
Repository: OK
'
)
return
true
})
},
...
...
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