-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path__security.py
More file actions
115 lines (82 loc) · 2.76 KB
/
Copy path__security.py
File metadata and controls
115 lines (82 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
from flask import render_template, jsonify, request, flash, redirect, url_for, abort, session
from flask_login import LoginManager, UserMixin, login_required, login_user, logout_user, current_user
from sqlalchemy.orm.exc import NoResultFound
from app import app, db
from app.models import User
from datetime import timedelta
app.permanent_session_lifetime = timedelta(seconds=30*60)
class AuthUser(UserMixin):
username = ""
name = ""
def __init__(self, username, password):
self.id = username
self.password = password
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
return str(self.id)
@classmethod
def get(cls,id):
username = ""
if (isinstance(id, str) or isinstance(id, unicode)):
username = id
else:
username = id()
user = None
if (id == "admin"):
user = AuthUser(id,"xxxx")
user.username = id
user.name = "Administrator"
else:
try:
object= db.session.query(User).filter_by(username=id).one()
user = AuthUser(object.username,object.password)
user.username = id
except NoResultFound, e:
print 'NoResultFound - reason "%s"' % str(e)
return None
return user
@app.errorhandler(401)
def page_not_found(e):
return render_template('/errors/401.html'), 404
@login_manager.user_loader
def load_user(userid):
return AuthUser.get(userid)
def load_user_from_request(request):
try:
username = "UnKnown"
if (request is str):
username = request
else:
username = request.form['username']
password = request.form['password']
print "load_user_from_request [" + username + "]"
user_entry = AuthUser.get(username)
if (user_entry is not None):
if password == user_entry.password:
print "User password OK..."
return user_entry
else:
print "User password wrong"
except Exception, e:
print e
return None
@login_manager.unauthorized_handler
def unauthorized():
# print "unauthorized"
return render_template('login.html')
@app.context_processor
def add_session_config():
"""Add current_app.permanent_session_lifetime converted to milliseconds
to context. The config variable PERMANENT_SESSION_LIFETIME is not
used because it could be either a timedelta object or an integer
representing seconds.
"""
return {
'PERMANENT_SESSION_LIFETIME_MS': (
app.permanent_session_lifetime.seconds * 1000),
}