Guest User

Untitled

a guest
Feb 26th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. // data/models/Passport.ts
  2.  
  3. import * as mongoose from 'mongoose'
  4. import * as passport from 'passport'
  5. import * as passportLocalMongoose from 'passport-local-mongoose'
  6. import Model from './mongoose'
  7.  
  8. (mongoose as any).Promise = global.Promise
  9. const ObjectIdType = mongoose.Schema.Types.ObjectId
  10.  
  11. const Passport: any = new Model({
  12. plugin: passportLocalMongoose,
  13. pluginOptions: {
  14. usernameUnique: true,
  15. },
  16. schema: {
  17. userId: { type: ObjectIdType, ref: 'User' }
  18. },
  19. title : 'Passport',
  20. })
  21. Passport.register = function (obj: any, pass: any) {
  22. return new Promise(resolve =>
  23. this.Collection.register(obj, pass,
  24. (err: any, res: any) => resolve(res)))
  25. }
  26. Passport.login = async function (ctx: any, user: string, pass: string) {
  27. let res = {};
  28. console.log('loginUser user> ', ctx.req.user) // should not be undefined after first
  29. if (typeof ctx.req.user === 'undefined') {
  30. ctx.req.body.username = user
  31. ctx.req.body.password = pass
  32.  
  33. const auth = new Promise(function(resolve, reject) {
  34. passport.authenticate('local', function(err, user, info) {
  35. if (err) {
  36. reject(err);
  37. }
  38. if (info && info.name && info.name.indexOf('Error') !== -1) {
  39. reject(new Error(info.message));
  40. }
  41. if (!user) {
  42. reject(new Error('No user returned'));
  43. }
  44. ctx.req.logIn(user, function(err: any) {
  45. if (err) {
  46. reject(err);
  47. }
  48. resolve(user);
  49. });
  50. })(ctx.req);
  51. });
  52.  
  53. await auth
  54. .then(user => {
  55. res = user;
  56. })
  57. .catch(err => {
  58. res = err;
  59. });
  60. } else {
  61. res = new Error('Already logged in');
  62. }
  63. return res;
  64. }
Add Comment
Please, Sign In to add comment