Blame view
common/models/user.js
3.8 KB
f7563de62
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
var config = require('../../server/config.json'); var loopback = require("loopback") var path = require('path'); module.exports = function(user) { var app; user.on('attached', function(a) { app = a; }); user.observe('after save', function setRoleMapping(ctx, next) { var RoleMapping = app.models.RoleMapping; var Role = app.models.Role; if (ctx.instance) { if(ctx.isNewInstance) { var roleId = ctx.instance.role; Role.findOne({where: {name: roleId}}, function(err, role) { if (err){ console.log("role find in user", err,new Date()) next(err); } role.principals.create({ principalType: RoleMapping.USER, principalId: ctx.instance.id }, function(err, principal) { if (err){ console.log("role create in user", err,new Date()) next(err); } }); }); } next(); } else{ if(ctx.data.role){ Role.findOne({where:{name:ctx.data.role}}, function(err, roleContent){ if (err){ console.log("data.role create in user", err,new Date()) next(err); } var getRoleId = roleContent.id; RoleMapping.findOne({where:{principalId:ctx.where.id}},function(err,updateRole){ if(err){ console.log("RoleMapping find in user", err,new Date()) next(err); } updateRole.updateAttribute("roleId",getRoleId,function(err,res){ if (err){ console.log("updateRole in user",err, new Date()) next(err); } }); }); }); } next(); } }); user.afterRemote('signUp', function(context, userdata, next) { console.log("userdata----",userdata); user.findById(userdata.res.id,function(err,userInstance){ console.log("-------------",userInstance); var options = { type: 'email', host:config.host, to: userInstance.email, from: 'test@viithiisys.com', subject: 'Thanks for registering.', template: path.resolve(__dirname, '../../server/views/verify.ejs'), redirect: 'http://localhost:3000/#/login', user: user }; userInstance.verify(options, function(err, response, next) { if (err) return next(err); console.log('> verification email sent:', response); userInstance.title = 'Signed up successfully', userInstance.content = 'Please check your email and click on the verification link before logging in.', userInstance.redirectTo = '/', userInstance.redirectToLinkText = 'Log in' context.res.send(userInstance); }); }) }); user.afterRemote('login', function(ctx, member, next) { user.findById(member.userId, function(err, response) { if(err){ console.log("afterRemote in extendedUser",err, new Date()) next(err); } else{ if(response && response.status == "false"){ user.logout(member.id, function (err) { var error = new Error(); error.message = "Account Deactivated"; next(error); }); } else { member.username = response.username; member.email = response.email; member.role = response.role; member.status = response.status; next(); } } }); }); user.signUp = function(req, cb) { req.role = "user"; user.create(req,function(err,users){ if(err){ cb(err,null) }else{ console.log("users==============",users); cb(null,users) } }) } user.remoteMethod('signUp', { accepts: [ {arg: 'req', type: 'object', 'http': {source: 'body'}} ], returns: [{arg: 'res', type: 'object', 'http': {source: 'body'}}], description: ['Sign up of user.'], http: {path:'/signUp', verb: 'post'} }); } |