improve isAdmin, and how admin is defined
admin configuration uses a map with id provide as key and the user identifier as the value (email address for legacy persona).
This commit is contained in:
@ -131,25 +131,32 @@ module.exports = exports = (log, loga, argv) ->
|
||||
|
||||
|
||||
security.isAdmin = (req) ->
|
||||
return false if admin is undefined
|
||||
try
|
||||
if admin
|
||||
idProvider = req.session.passport.user.provider
|
||||
switch idProvider
|
||||
when 'github', 'google', 'twitter'
|
||||
if _.isEqual(admin[idProvider].id, req.session.passport.user.id)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
when 'persona'
|
||||
if _.isEqual(admin[idProvider].email, req.session.passport.user.email)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
else
|
||||
return false
|
||||
catch error
|
||||
return false if req.session.passport.user.provider is undefined
|
||||
catch
|
||||
return false
|
||||
|
||||
idProvider = req.session.passport.user.provider
|
||||
|
||||
if admin[idProvider] is undefined
|
||||
console.log 'admin not defined for ', idProvider
|
||||
return false
|
||||
|
||||
switch idProvider
|
||||
when "github", "google", "twitter"
|
||||
if _.isEqual(admin[idProvider], req.session.passport.user.id)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
when "persona"
|
||||
if _.isEqual(admin[idProvider], req.session.passport.user.email)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
else
|
||||
return false
|
||||
|
||||
|
||||
security.login = (updateOwner) ->
|
||||
console.log "Login...."
|
||||
|
Reference in New Issue
Block a user