Advertisement
Guest User

Untitled

a guest
Jan 27th, 2020
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. ---permission.py
  2. from flask import session, abort, redirect, url_for, flash, request
  3.  
  4. from tools.database.models import *
  5. from functools import wraps
  6.  
  7. def authorize(role="ADMIN", abort_code=401, message=None):
  8.  
  9. def decorate(func):
  10. # print("The", func.__name__, "page now requires anonymity.")
  11.  
  12. @wraps(func)
  13. def intercept(*args, **kwargs):
  14.  
  15. if type(role) == str:
  16. roles = [role]
  17. elif type(role) == list:
  18. roles = role
  19. else:
  20. raise ValueError(f"Parameter 'role' must be a str or list you used a {str(type(role))}")
  21.  
  22. if g.user:
  23. if g.user.role in roles:
  24. return func(*args, **kwargs)
  25.  
  26. if message:
  27. abort(abort_code, message)
  28. abort(abort_code)
  29.  
  30. return intercept
  31. return decorate
  32.  
  33.  
  34. def anonymous(state=True):
  35.  
  36. def decorate(func):
  37. # print("The", func.__name__, "page now requires anonymity.")
  38.  
  39. @wraps(func)
  40. def intercept(*args, **kwargs):
  41.  
  42. if 'user' in session:
  43. user = User.get_by_id(session.get('user', None))
  44. anon = user is None
  45. else:
  46. anon = True
  47.  
  48. if anon != state:
  49. if anon:
  50. flash('You must be logged in to access that page', 'warning')
  51. else:
  52. flash('You must be logged out to access that page', 'warning')
  53. return redirect(request.referrer) if request.referrer else redirect(url_for('index'))
  54.  
  55. return func(*args, **kwargs)
  56. return intercept
  57. return decorate
  58.  
  59.  
  60. ---views.py
  61. from flask import app, session, g
  62.  
  63. @app.before_request
  64. def before_request_func():
  65. if 'user' in session:
  66. try:
  67. g.user = User.get_by_id(session['user'])
  68. except Exception:
  69. del session['user']
  70. else:
  71. g.user = None
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement