Guest User

Untitled

a guest
Sep 26th, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. import eventlet
  2. eventlet.monkey_patch()
  3.  
  4. # http://gouthamanbalaraman.com/blog/minimal-flask-login-example.html
  5. from flask_login import UserMixin, LoginManager
  6. from flask_bootstrap import Bootstrap
  7.  
  8. socketio = SocketIO(asyncmode="eventlet")
  9. login_manager = LoginManager()
  10.  
  11. app = Flask(__name__)
  12. app.debug = debug
  13. app.url_map.strict_slashes = False
  14. app.config['SECRET_KEY'] = 'secret'
  15.  
  16. class User(UserMixin):
  17. user_database = {"Admin": ("Admin", 'SSAdmin')}
  18.  
  19. def __init__(self, username, password):
  20. self.id = username
  21. self.password = password
  22.  
  23. @classmethod
  24. def get(cls, id):
  25. return cls.user_database.get(id)
  26.  
  27.  
  28. @login_manager.request_loader
  29. def load_user(request):
  30. token = request.headers.get('Authorization')
  31. if token is None:
  32. token = request.args.get('token')
  33.  
  34. if token is not None:
  35. username, password = token.split(":") # naive token
  36. user_entry = User.get(username)
  37. if user_entry is not None:
  38. user = User(user_entry[0], user_entry[1])
  39. if user.password == password:
  40. return user
  41. return None
  42.  
  43. socketio.init_app(app)
  44. login_manager.init_app(app)
  45. bootstrap = Bootstrap(app)
  46.  
  47. from flask import request, render_template, redirect, url_for
  48. from flask_login import login_required
  49. from flask_wtf import FlaskForm
  50. from wtforms import StringField, PasswordField, BooleanField
  51. from wtforms.validators import InputRequired
  52. from app.project import User
  53.  
  54. from . import admin_blueprint
  55.  
  56.  
  57. class LoginForm(FlaskForm):
  58. username = StringField('username', validators=[InputRequired()])
  59. password = PasswordField('password', validators=[InputRequired()])
  60. remember = BooleanField('Remember Me')
  61.  
  62.  
  63. @admin_blueprint.route('/', methods=["GET", "POST"])
  64. # @login_required
  65. def index():
  66.  
  67. # if request.method == "GET":
  68. form = LoginForm()
  69.  
  70. if form.validate_on_submit():
  71. user = User.get(id=form.username.data)
  72. print(user)
  73. if user:
  74. if user[1] == form.password.data:
  75. return redirect(url_for('admin.download'))
  76.  
  77. return render_template('admin/login.html', form=form)
  78.  
  79.  
  80. @admin_blueprint.route('/download', methods=["GET", "POST"])
  81. @login_required
  82. def download():
  83.  
  84. return "<h1>Welcome, Admin</h1>"
  85.  
  86. {% extends "bootstrap/base.html" %}
  87. {% import "bootstrap/wtf.html" as wtf %}
  88.  
  89. {% block title %}
  90. Login
  91. {% endblock %}
  92.  
  93. {% block styles %}
  94. {{ super() }}
  95. <link rel="stylesheet" href="{{ url_for('admin.static', filename='styles/signin.css') }}">
  96. {% endblock %}
  97.  
  98. {% block content %}
  99. <div class="container">
  100.  
  101. <div class="row">
  102. <div class="col-md-8 col-md-offset-2">
  103. <form class="sign-in" method="POST" action="{{ url_for('admin.download') }}">
  104. <h2 class="form-signin-heading">Please sign in</h2>
  105. {{ form.hidden_tag() }}
  106. {{ wtf.form_field(form.username) }}
  107. {{ wtf.form_field(form.password) }}
  108. {{ wtf.form_field(form.remember) }}
  109. <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
  110. </form>
  111. </div>
  112. </div>
  113.  
  114. </div>
  115. {% endblock %}
Add Comment
Please, Sign In to add comment