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:
Paul Rodwell
2016-08-09 14:00:55 +01:00
parent 127f9838d1
commit 623c28428a

View File

@ -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...."