Guest User

Untitled

a guest
Jun 29th, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. import tornado.ioloop
  2. import tornado.web
  3. import smtplib
  4. import hashlib
  5.  
  6.  
  7. class BaseHandler(tornado.web.RequestHandler):
  8. def get_current_user(self):
  9. return self.get_secure_cookie("hashedPass")
  10.  
  11. class MainHandler(BaseHandler):
  12. def get(self):
  13. if not self.current_user:
  14. self.redirect("/login")
  15. return
  16. else:
  17. user_department_file = open('../database/user-department', 'r+')
  18. for line in user_department_file:
  19. details = line.split(';')
  20. print details
  21. department = None
  22. #if username is correct, give department
  23. if details[0] == self.get_secure_cookie("user"):
  24. department = details[-1].rstrip('\n')
  25. break
  26. if department != None:
  27. self.render("../main.html", username = self.get_secure_cookie("user"), department=department)
  28. else:
  29. self.write("No department.")
  30.  
  31. def post(self):
  32. logout = self.get_argument("logout")
  33. if logout == "yes":
  34. self.clear_cookie("hashedPass")
  35. self.clear_cookie("user")
  36. self.redirect("/login")
  37.  
  38. class LoginHandler(BaseHandler):
  39. def get(self):
  40. self.render("../login.html")
  41.  
  42. def post(self):
  43. try:
  44. ssl = smtplib.SMTP_SSL ("smtp.cc.ic.ac.uk", 465)
  45. username = self.get_argument("username")
  46. password = self.get_argument("password")
  47. ssl.login(username, password)
  48. ssl.quit()
  49.  
  50. hashedPass = hashlib.sha512(username + password).hexdigest()
  51. self.set_secure_cookie("hashedPass", hashedPass)
  52. self.set_secure_cookie("user", username)
  53. self.redirect("/")
  54. except:
  55. self.write("Error")
  56.  
  57.  
  58.  
  59. application = tornado.web.Application([
  60. (r"/", MainHandler),
  61. (r"/login", LoginHandler),
  62. ], cookie_secret = "MySecretPassphraseMouahaha123456")
  63.  
  64.  
  65. if __name__ == "__main__":
  66. application.listen(8888)
  67. tornado.ioloop.IOLoop.instance().start()
Add Comment
Please, Sign In to add comment