Advertisement
Guest User

Untitled

a guest
Dec 21st, 2014
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. var uuid = require('node-uuid');
  2.  
  3. var pb = require('../lib/pb');
  4. var PBException = require('../lib/pb-helpers').PBException;
  5. var utils = require('../lib/utils');
  6.  
  7.  
  8. module.exports.signup = function *(session, userID, envelope) {
  9. var command = envelope.userSignupRequest;
  10.  
  11. var password = command.password;
  12. if (!password || password.length < 6) {
  13. throw new PBException(pb.PBError.ErrorType.INVALID_PASSWORD);
  14. }
  15.  
  16. var email = command.email;
  17. if (!email) {
  18. throw new PBException(pb.PBError.ErrorType.INVALID_EMAIL);
  19. }
  20.  
  21. var user = yield session.db.users.findOne({ email: email });
  22. if (user) {
  23. throw new PBException(pb.PBError.ErrorType.UNAVAILABLE_EMAIL);
  24. }
  25.  
  26. user = yield session.db.users.insert({
  27. email: email,
  28. fname: command.fname,
  29. lname: command.lname,
  30. password: utils.sha256(password),
  31. type: pb.PBUser.UserType.BIDDER
  32. });
  33.  
  34. var userSession = yield session.db.sessions.insert({
  35. userID: user._id,
  36. authToken: uuid.v4()
  37. });
  38.  
  39. return new pb.PBCommandEnvelope({
  40. type: pb.PBCommandEnvelope.CommandType.USER_SIGNUP_RESPONSE,
  41. userSignupResponse: {
  42. user: { userID: user._id.toString() },
  43. session: {
  44. sessionID: userSession._id.toString(),
  45. authToken: userSession.authToken
  46. },
  47. email: email
  48. }
  49. });
  50. };
  51.  
  52. module.exports.login = function *(session, userID, envelope) {
  53. var command = envelope.userLoginRequest;
  54.  
  55. var email = command.email;
  56. if (!email) {
  57. throw new PBException(pb.PBError.ErrorType.INVALID_EMAIL);
  58. }
  59.  
  60. var user = yield session.db.users.findOne({ email: email });
  61. if (!user) {
  62. throw new PBException(pb.PBError.ErrorType.NOT_FOUND);
  63. }
  64.  
  65. if (utils.sha256(command.password || '') !== user.password) {
  66. throw new PBException(pb.PBError.ErrorType.UNAUTHORIZED);
  67. }
  68.  
  69. var userSession = yield session.db.sessions.insert({
  70. userID: user._id,
  71. authToken: uuid.v4()
  72. });
  73.  
  74. return new pb.PBCommandEnvelope({
  75. type: pb.PBCommandEnvelope.CommandType.USER_LOGIN_RESPONSE,
  76. userLoginResponse: {
  77. user: {
  78. email: user.email,
  79. userID: user._id.toString(),
  80. fname: user.fname || null,
  81. lname: user.lname || null
  82. },
  83. session: {
  84. sessionID: userSession._id.toString(),
  85. authToken: userSession.authToken
  86. },
  87. email: user.email
  88. }
  89. });
  90. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement