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()
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()
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()
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()
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()
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()
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()
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()
async def email_exists(self, email): userFunc = UserFunctions() return await userFunc.getEmail(email)