Advertisement
Guest User

Untitled

a guest
Feb 20th, 2018
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. 'use strict'
  2.  
  3. const User = use('App/Models/User')
  4. const {validate} = use('Validator')
  5. const got = require('got')
  6. const crypto = use('crypto')
  7. const uuid = use('uuid')
  8. const Mail = use('Mail')
  9. const Env = use('Env')
  10.  
  11.  
  12.  
  13.  
  14. class SocialAuthenticationController {
  15. //ally
  16. async login ({params, response, request,auth})
  17. {
  18.  
  19. const apiUrl = `https://graph.facebook.com/v2.7`
  20. const profileUrl =`${apiUrl}/me?access_token=${params.accesToken}&fields=name,email`
  21. try {
  22. const fetchProfile = await got(profileUrl, {
  23. headers: {
  24. 'Accept': 'application/json'
  25. },
  26. json: true
  27. })
  28. catch (error) {
  29. if (request.canceled){
  30. return response.status(400).json({"status":{},"response":{"message":"Invalid acces token"}})
  31. }
  32. }
  33.  
  34. const fetchProfile = await got(profileUrl, {
  35. headers: {
  36. 'Accept': 'application/json'
  37. },
  38. json: true
  39. })
  40.  
  41.  
  42.  
  43. if(!fetchProfile){return response.status(400).json({"status":{},"response":{"message":"Invalid acces token"}})}
  44. var temp = fetchProfile.body
  45. temp = temp.email
  46. const user = await User.query().where('email',temp).distinct('id','email','is_verified','updated_at','created_at').first()
  47.  
  48.  
  49. if(!user){
  50. return response.status(400).json({"status":{temp},"response":{"message":"User don`t exist"}})
  51. }
  52. const token =await auth.withRefreshToken().generate(user)
  53.  
  54. return response.status(200).json({"status":{user,token},"response":{"message":"User logged in"}})
  55.  
  56.  
  57.  
  58. }
  59.  
  60. async register({params, response, request}){
  61.  
  62. const allParams = request.all()
  63. const rules = {
  64. password : 'required|min:6|max:25',
  65. }
  66.  
  67. var user = await User.query().where('email',params.email).distinct('email').first()
  68. if(user){return response.status(400).json({"status":{user},"response":{"message":"Email alredy exist"}})}
  69. const validation =await validate(allParams, rules)
  70. if (validation.fails()){
  71. return response.status(400).json({"status":{},"response":{"message":"Password is to short or to long"}})}
  72. const token_hash = crypto.createHash('md5').update(uuid.v4()).digest('hex')
  73.  
  74. await User.create ({
  75. email:params.email,
  76. password:allParams.password,
  77. token:token_hash
  78.  
  79. })
  80.  
  81. let link = `${Env.get('APP_URL')}/registertoken/${token_hash}`
  82. await Mail.send('email.acc',{link}, (message) => {
  83. message.subject('Confirm your account')
  84. message.from('foo@bar.com')
  85. message.to(params.email)
  86. })
  87. user = await User.query().where('email',params.email).distinct('id','email','is_verified','updated_at','created_at').first()
  88. return response.status(200).json({"response":{user},"status":{"message" :'User created, please verify your account'}})
  89.  
  90.  
  91.  
  92. }
  93.  
  94.  
  95. }
  96.  
  97.  
  98. module.exports = SocialAuthenticationController
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement