0
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
1 # -*- encoding: utf-8 -*- |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
2 # Description: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
3 # Farol Session Management |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
4 # |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
5 # Authors: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
6 # BenoƮt Allard <benoit.allard@greenbone.net> |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
7 # |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
8 # Copyright: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
9 # Copyright (C) 2014 Greenbone Networks GmbH |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
10 # |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
11 # This program is free software; you can redistribute it and/or |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
12 # modify it under the terms of the GNU General Public License |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
13 # as published by the Free Software Foundation; either version 2 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
14 # of the License, or (at your option) any later version. |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
15 # |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
16 # This program is distributed in the hope that it will be useful, |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
19 # GNU General Public License for more details. |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
20 # |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
21 # You should have received a copy of the GNU General Public License |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
22 # along with this program; if not, write to the Free Software |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
23 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
24 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
25 """\ |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
26 Stuff related to temporary storage |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
27 """ |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
28 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
29 from functools import wraps |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
30 import uuid |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
31 |
62
|
32 from flask import session, redirect, url_for |
0
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
33 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
34 CVRFs = {} |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
35 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
36 def set_current(cvrf): |
12
|
37 if 'id' not in session: |
|
38 # New user. |
|
39 session['id'] = uuid.uuid4() |
0
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
40 CVRFs[session['id']] = cvrf |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
41 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
42 def get_current(): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
43 if not has_current(): return None |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
44 return CVRFs[session['id']] |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
45 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
46 def has_current(): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
47 if 'id' not in session: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
48 return False |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
49 if session['id'] not in CVRFs: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
50 return False |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
51 return CVRFs[session['id']] is not None |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
52 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
53 def del_current(): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
54 if 'id' in session: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
55 if session['id'] in CVRFs: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
56 del CVRFs[session['id']] |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
57 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
58 def document_required(f): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
59 @wraps(f) |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
60 def decorated_function(*args, **kwargs): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
61 if not has_current(): |
20
|
62 return redirect(url_for('welcome')) |
0
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
63 return f(*args, **kwargs) |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
64 return decorated_function |