OverleafAuthenticationController.coffee 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. logger = require("logger-sharelatex")
  2. settings = require "settings-sharelatex"
  3. {User} = require "../../models/User"
  4. UserCreator = require "../User/UserCreator"
  5. AuthenticationController = require "./AuthenticationController"
  6. passport = require "passport"
  7. module.exports = OverleafAuthenticationController =
  8. passportLogin: passport.authenticate("oauth2")
  9. passportCallback: passport.authenticate("oauth2")
  10. afterPassportLogin: (req, res, next) ->
  11. logger.log {user: req.user}, "successful log in!"
  12. AuthenticationController.afterLoginSessionSetup req, req.user, (err) ->
  13. return next(err) if err?
  14. res.redirect("/")
  15. doPassportLogin: (accessToken, refreshToken, profile, cb) ->
  16. logger.log {accessToken, refreshToken, profile}, "authing user via overleaf oauth"
  17. OverleafAuthenticationController._findOrCreateUser profile, (err, user) ->
  18. return cb(err) if err?
  19. user.overleaf.accessToken = accessToken
  20. user.save (err) ->
  21. return cb(err) if err?
  22. return cb(null, user)
  23. _findOrCreateUser: (profile, cb) ->
  24. User.findOne { "overleaf.id": profile.id }, (err, user) ->
  25. return cb(err) if err?
  26. return cb(null, user) if user?
  27. UserCreator.createNewUser { overleaf: { id: profile.id }, email: profile.email }, cb