UNPKG

usr

Version:

User and groups management rest webservice

215 lines (214 loc) 7.2 kB
(function() { var Auth, Component; var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; }; Component = require('../component'); module.exports = Auth = (function() { __extends(Auth, Component); function Auth(app) { this.app = app; console.log("CONSTRUCT :"); console.log(app.stores); console.log(this.app.stores); this._everyAuth(); this._routes(); } Auth.prototype.addUser = function(source, id, datas, cb) { var store, _; if (source == null) { source = ''; } if (id == null) { id = ''; } if (datas == null) { datas = {}; } _ = this; console.log("ADDUSER ?"); store = this.app.stores.user; return store.addUser(source, id, datas, function(err, userId) { _.checkErr(err); console.log("ADDED :"); console.log(_.app.stores); cb(null, userId); return _.emit('user/new', { userId: userId, source: source, id: id }); }); }; Auth.prototype.login = function(source, id, datas, user, cb) { var store, _; _ = this; store = this.app.stores.user; console.log("LOGIN ?"); console.log(_.app.stores); if (user !== null) {} else { return store.findUserBySourceAndId(source, id, function(err, user) { console.log("DID WE FIND ?"); console.log(_.app.stores); console.log(err); if (err != null) { if (err[0] === 'Not found') { return store.addUser(source, id, datas, function(err, userId) { return store.findUserById(userId, function(err, user) { cb(null, user); _.app.event.emit('user/login', { userId: user.id }); }); }); } else { cb(err, null); } } else { if (source === 'local') { if (datas.password !== user[source].password) { cb(['Wrong Password'], null); return; } } _.app.event.emit('user/login', { userId: user.id }); cb(null, user); } }); } }; Auth.prototype._routes = function() { var _; _ = this; this.routeGet('/logout/*', function(req, res) { req.logout(); delete req.session.token; if ((req.params != null) && (req.params[0] != null) && req.params[0] !== '') { res.redirect(req.params[0]); return; } return res.redirect('/'); }); this.routeGet('/login/*', function(req, res) { if ((req.params != null) && (req.params[0] != null) && req.params[0] !== '') { req.session.url = req.params[0]; } if (req.user != null) { res.redirect('/redirect/'); return; } console.log("REDIRECT LOCAL AUTH"); return res.redirect('/auth/local'); }); this.routeGet('/info/:token/:appToken', function(req, res) { var json; json = {}; return _.app.token.getInfo(req.params.token, req.params.appToken, function(err, info) { _.checkErr(err); return res.json(info); }); }); return this.routeGet('/redirect', function(req, res) { var tokenCallback; if (!req.loggedIn) { res.redirect('/login/'); return; } tokenCallback = function(err, token) { var url; req.session.token = token; if (req.session.url != null) { url = req.session.url + token; req.session.url = null; res.redirect(url); } else { res.json({ token: token }); } }; if (req.session.token != null) { return tokenCallback(null, req.session.token); } else { return _.app.token.add(req.user.id, {}, tokenCallback); } }); }; Auth.prototype._everyAuth = function() { var providerConfigs, providerName, store, _, _ref; _ = this; store = this.app.stores.user; console.log("EVERYAUTH :"); console.log(this.app.stores); this.everyAuth = require('everyauth'); this.everyAuth.everymodule.findUserById(function(id, cb) { console.log("FIND USER BY ID ??" + id); return store.findUserById(id, cb); }); this.everyAuth.password.loginWith('email').getLoginPath('/auth/local').postLoginPath('/auth/local').loginView('login').authenticate(function(login, password) { var promise; console.log("PASSWORD AUTHENTIFICATION"); console.log(store); promise = this.Promise(); _.login('local', login, { login: login, password: password }, null, function(err, user) { console.log("AUTHENTIFICATION RES"); console.log(err); console.log(user); if (err !== null) { promise.fulfill(err); return; } return promise.fulfill(user); }); return promise; }).getRegisterPath('/register').postRegisterPath('/register').registerView('register.jade').validateRegistration(function(newUserAttrs, errors) { return null; }).registerUser(function(newUserAttrs) { return null; }).loginSuccessRedirect('/redirect').registerSuccessRedirect('/redirect'); _ref = _.app.configs.everyAuth; for (providerName in _ref) { providerConfigs = _ref[providerName]; this._everyAuth_Providers(providerName, providerConfigs); } this.express().use(this.everyAuth.middleware()); return this.everyAuth.helpExpress(this.express()); }; Auth.prototype._everyAuth_Providers = function(providerName, providerConfigs) { var key, value, _, _results; _ = this; _results = []; for (key in providerConfigs) { value = providerConfigs[key]; this.everyAuth[providerName][key](value); this.everyAuth[providerName].redirectPath('/redirect'); _results.push(this.everyAuth[providerName].findOrCreateUser(function(session, accessToken, accessTokenExtra, datas) { var promise; datas.accessToken = accessToken; datas.accessTokenExtra = accessTokenExtra; promise = _.everyAuth.password.Promise(); _.login(providerName, accessToken, datas, null, function(err, user) { if (err != null) { promise.fulfill(err); return; } return promise.fulfill(user); }, session); return promise; })); } return _results; }; return Auth; })(); }).call(this);