Advertisement
Guest User

Untitled

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