mirror of
https://github.com/overleaf/overleaf.git
synced 2024-10-31 21:21:03 -04:00
34 lines
1.2 KiB
CoffeeScript
34 lines
1.2 KiB
CoffeeScript
|
logger = require("logger-sharelatex")
|
||
|
settings = require "settings-sharelatex"
|
||
|
{User} = require "../../models/User"
|
||
|
UserCreator = require "../User/UserCreator"
|
||
|
AuthenticationController = require "./AuthenticationController"
|
||
|
|
||
|
passport = require "passport"
|
||
|
|
||
|
module.exports = OverleafAuthenticationController =
|
||
|
passportLogin: passport.authenticate("oauth2")
|
||
|
|
||
|
passportCallback: passport.authenticate("oauth2")
|
||
|
|
||
|
afterPassportLogin: (req, res, next) ->
|
||
|
logger.log {user: req.user}, "successful log in!"
|
||
|
AuthenticationController.afterLoginSessionSetup req, req.user, (err) ->
|
||
|
return next(err) if err?
|
||
|
res.redirect("/")
|
||
|
|
||
|
doPassportLogin: (accessToken, refreshToken, profile, cb) ->
|
||
|
logger.log {accessToken, refreshToken, profile}, "authing user via overleaf oauth"
|
||
|
OverleafAuthenticationController._findOrCreateUser profile, (err, user) ->
|
||
|
return cb(err) if err?
|
||
|
user.overleaf.accessToken = accessToken
|
||
|
user.save (err) ->
|
||
|
return cb(err) if err?
|
||
|
return cb(null, user)
|
||
|
|
||
|
_findOrCreateUser: (profile, cb) ->
|
||
|
User.findOne { "overleaf.id": profile.id }, (err, user) ->
|
||
|
return cb(err) if err?
|
||
|
return cb(null, user) if user?
|
||
|
UserCreator.createNewUser { overleaf: { id: profile.id }, email: profile.email }, cb
|