| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- var mongoose = require('mongoose'),
- User = mongoose.model('User'),
- jwt = require('jsonwebtoken'),
- security = require('../../config/security'),
- Handler = require('../helpers/handler'),
- EventEmitter = require('../events/listeners');
- module.exports = {
- login : function(request, response) {
- var user = request.user;
- if( !user ) {
- return response.status(401).json({message: 'Authentication failed'});
- }
-
- return response.json(
- {
- username: user.username,
- token: jwt.sign(
- {
- user_id: user.id
- }, security.jwt.secretOrKey)
-
- });
- },
-
- logout : function(request, response) {
- return response.status(200).end();
- },
-
- subscribe : function(request, response) {
- var registered = new User({username: request.body.username, password: request.body.password});
- registered.validate(function(errors) {
- if( errors ) {
- return Handler.errorHandler(errors, 400, response);
- }
-
- User.findOne({username: request.body.username}, function(error, user) {
- if( error ) {
- return response.send(error);
- }
- if( !user ) {
- registered.save(function(errors) {
- if( errors ) {
- return Handler.errorHandler(errors, 500, response);
- }
-
- return response.status(201).json({
- username: registered.username,
- token: jwt.sign(
- {
- user_id: registered.id
- }, security.jwt.secretOrKey)
- });
- });
- } else {
- return response.status(409).json({message: 'Account already exists'});
- }
- });
- });
- },
-
- unsubscribe : function(request, response) {
- var user = request.user;
-
- if( !user ) {
- return response.status(401).json({message: 'Authentication failed'});
- }
-
- User.remove({username: user.username}, function(error) {
- if( error ) {
- return response.status(500).send(error);
- }
-
- EventEmitter.eventEmitter.emit(EventEmitter.events.ACCOUNTS_DELETE_BY_USER_ID_EVT, user.id);
-
- return response.status(204).end();
- });
- }
- }
|