示例#1
0
 async def post(self):
     if self.request.body:
         data = json.loads(self.request.body)
         user = ''
         if ('password' in data) & ('username' in data):
             userFunc = UserFunctions()
             user = await userFunc.getUser(username=data['username'])
         elif ('password' in data) & ('email' in data):
             userFunc = UserFunctions()
             user = await userFunc.getUser(email=data['email'])
         if user:
             key = b'i102LDEGa-8PLuZJ9kw-VR2VKCeYxOanZvM4KQAZLt8='
             user['password'] = self.decrypt(
                 key, bytes(user['password'], 'utf-8')).decode("utf-8")
             if user['password'] == data['password']:
                 token = super(LoginHandler, self).jwtEncode()
                 self.encoded = token
                 response = {
                     'token': self.encoded.decode('ascii'),
                     'id': str(user['_id'])
                 }
                 self.write(response)
             else:
                 self.set_status(400)
                 self.write({"message": "wrong password"})
                 self.finish()
         else:
             self.set_status(400)
             self.write({"message": "wrong data"})
             self.finish()
     else:
         self.set_status(400)
         self.write({"message": "data is missing"})
         self.finish()
示例#2
0
 async def put(self, id):
     if self.request.body:
         data = json.loads(self.request.body)
         if data['id']:
             id = data['id']
             userFunc = UserFunctions()
             del data['id']
             if 'password' in data:
                 key = b'i102LDEGa-8PLuZJ9kw-VR2VKCeYxOanZvM4KQAZLt8='
                 cipher_password = self.encrypt(
                     key, bytes(data['password'], 'utf-8'))
                 data['password'] = cipher_password.decode("utf-8")
             result = await userFunc.updateUser(id, data)
             if result:
                 self.write({"message": "user updated"})
             else:
                 self.set_status(500)
                 self.write({"message": "database error"})
                 self.finish()
         else:
             self.set_status(400)
             self.write({"message": "missing id"})
             self.finish()
     else:
         self.set_status(400)
         self.write({"message": "missing data"})
         self.finish()
示例#3
0
 async def post(self):
     if self.request.body:
         data = json.loads(self.request.body)
         if 'email' in data:
             if await self.email_exists(data['email']):
                 userFunc = UserFunctions()
                 user = await userFunc.getUser(email=data['email'])
                 if user:
                     res = {"isExist": True, "provider": user['provider']}
                     self.set_status(200)
                     self.write(res)
                     self.finish()
                 else:
                     self.set_status(500)
                     self.write({"message": "database error"})
                     self.finish()
             else:
                 res = {"isExist": False}
                 self.set_status(200)
                 self.write(res)
                 self.finish()
         else:
             self.set_status(400)
             self.write({"message": "missing email"})
             self.finish()
     else:
         self.set_status(400)
         self.write({"message": "missing data"})
         self.finish()
示例#4
0
 async def post(self):
   if self.request.body:
     data = json.loads(self.request.body)
     if self.verify_data(data):
       if not await self.email_exists(data['email']):
         key = b'i102LDEGa-8PLuZJ9kw-VR2VKCeYxOanZvM4KQAZLt8='
         cipher_password = self.encrypt(key, bytes(data['password'], 'utf-8'))
         data['password'] = cipher_password.decode("utf-8")
         userFunc = UserFunctions()
         res = await userFunc.insertUser(data)
         if res:
           _id = res.inserted_id
           token = super(SignupHandler, self).jwtEncode()
           self.encoded = token
           response = {'token': self.encoded.decode('ascii'), 'id': str(_id)}
           self.write(response)
         else:
           self.write({'message': 'error happened'})
       else:
         self.set_status(400)
         self.write({"message":"email exists"})
         self.finish()
     else:
       self.set_status(400)
       self.write({"message":"some data is missing"})
       self.finish()
   else:
     self.set_status(400)
     self.write({"message":"data is missing"})
     self.finish()
示例#5
0
 async def get(self, id):
     # get other users' data
     if id:
         userFunc = UserFunctions()
         result = await userFunc.getUser(id=id)
         if result:
             result['_id'] = str(result['_id'])
             del result['password']
             self.write(json_util.dumps(result))
             self.set_header('Content-Type', 'application/json')
             self.finish()
         else:
             self.set_status(404)
             self.write({"message": "user_id doesn't exist"})
             self.finish()
     # get the user's data
     else:
         if self.request.body:
             data = json.loads(self.request.body)
             if data['id']:
                 id = data['id']
                 userFunc = UserFunctions()
                 result = await userFunc.getUser(id=id)
                 if result:
                     result['_id'] = str(result['_id'])
                     del result['password']
                     self.write(json_util.dumps(result))
                     self.set_header('Content-Type', 'application/json')
                     self.finish()
                 else:
                     self.set_status(404)
                     self.write({"message": "user_id doesn't exist"})
                     self.finish()
             else:
                 self.set_status(400)
                 self.write({"message": "missing id"})
                 self.finish()
         else:
             self.set_status(400)
             self.write({"message": "missing id"})
             self.finish()
示例#6
0
 async def post(self):
     data = self.request.body_arguments
     linkID = data['id'][0].decode("utf-8")
     password = data['password'][0].decode("utf-8")
     linkFuncs = LinksFunctions()
     link = await linkFuncs.getLink(linkID)
     userFuncs = UserFunctions()
     key = b'i102LDEGa-8PLuZJ9kw-VR2VKCeYxOanZvM4KQAZLt8='
     cipher_password = self.encrypt(key, bytes(password, 'utf-8'))
     user = {'password': cipher_password.decode("utf-8")}
     res = await userFuncs.updateUser(link['userID'], user)
     if res:
         result = await linkFuncs.deleteLink(linkID)
         self.set_status(200)
         self.write({"message": "password changed"})
         self.finish()
示例#7
0
 async def delete(self, id):
     if self.request.body:
         data = json.loads(self.request.body)
         if 'id' in data:
             if 'password' in data:
                 id = data['id']
                 password = data['password']
                 userFunc = UserFunctions()
                 user = await userFunc.getUser(id=id)
                 key = b'i102LDEGa-8PLuZJ9kw-VR2VKCeYxOanZvM4KQAZLt8='
                 user['password'] = self.decrypt(
                     key, bytes(user['password'], 'utf-8')).decode("utf-8")
                 if user['password'] == data['password']:
                     result = await userFunc.deleteUser(id)
                     if result:
                         self.write({"message": "user deleted"})
                     else:
                         self.set_status(500)
                         self.write({"message": "database error"})
                         self.finish()
                 else:
                     self.set_status(400)
                     self.write({"message": "wrong password"})
                     self.finish()
             else:
                 self.set_status(400)
                 self.write({"message": "missing password"})
                 self.finish()
         else:
             self.set_status(400)
             self.write({"message": "missing id"})
             self.finish()
     else:
         self.set_status(400)
         self.write({"message": "missing data"})
         self.finish()
示例#8
0
    async def post(self):
        if self.request.body:
            data = json.loads(self.request.body)
            if data['email']:
                # check if email exists in db
                if await self.email_exists(data['email']):
                    userFunc = UserFunctions()
                    user = await userFunc.getUser(email=data['email'])
                    # create email id from user id
                    userID = str(user['_id'])
                    linkID = hashlib.md5(userID.encode()).hexdigest()

                    link = {"userID": userID, "linkID": linkID}
                    linksFunc = LinksFunctions()
                    result = await linksFunc.insertLink(link)

                    # send email
                    link = "https://rishacar.herokuapp.com/reset/password/" + linkID

                    self.send_email(data['email'], link)

                    self.set_status(200)
                    self.write({"message": "ok"})
                    self.finish()
                else:
                    self.set_status(400)
                    self.write({"message": "wrong email"})
                    self.finish()
            else:
                self.set_status(400)
                self.write({"message": "missing email"})
                self.finish()
        else:
            self.set_status(400)
            self.write({"message": "data is missing"})
            self.finish()
示例#9
0
 async def email_exists(self, email):
     userFunc = UserFunctions()
     return await userFunc.getEmail(email)