root / snf-astakos-app / astakos / api / user.py @ 0d069390
History | View | Annotate | Download (3.9 kB)
1 | bd40abfa | Christos Stavrakakis | # Copyright 2011-2013 GRNET S.A. All rights reserved.
|
---|---|---|---|
2 | 7a0c3713 | Kostas Papadimitriou | #
|
3 | 64cd4730 | Antony Chazapis | # Redistribution and use in source and binary forms, with or
|
4 | 64cd4730 | Antony Chazapis | # without modification, are permitted provided that the following
|
5 | 64cd4730 | Antony Chazapis | # conditions are met:
|
6 | 7a0c3713 | Kostas Papadimitriou | #
|
7 | 64cd4730 | Antony Chazapis | # 1. Redistributions of source code must retain the above
|
8 | 64cd4730 | Antony Chazapis | # copyright notice, this list of conditions and the following
|
9 | 64cd4730 | Antony Chazapis | # disclaimer.
|
10 | 7a0c3713 | Kostas Papadimitriou | #
|
11 | 64cd4730 | Antony Chazapis | # 2. Redistributions in binary form must reproduce the above
|
12 | 64cd4730 | Antony Chazapis | # copyright notice, this list of conditions and the following
|
13 | 64cd4730 | Antony Chazapis | # disclaimer in the documentation and/or other materials
|
14 | 64cd4730 | Antony Chazapis | # provided with the distribution.
|
15 | 7a0c3713 | Kostas Papadimitriou | #
|
16 | 64cd4730 | Antony Chazapis | # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
17 | 64cd4730 | Antony Chazapis | # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18 | 64cd4730 | Antony Chazapis | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19 | 64cd4730 | Antony Chazapis | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
20 | 64cd4730 | Antony Chazapis | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21 | 64cd4730 | Antony Chazapis | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22 | 64cd4730 | Antony Chazapis | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23 | 64cd4730 | Antony Chazapis | # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24 | 64cd4730 | Antony Chazapis | # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25 | 64cd4730 | Antony Chazapis | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26 | 64cd4730 | Antony Chazapis | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27 | 64cd4730 | Antony Chazapis | # POSSIBILITY OF SUCH DAMAGE.
|
28 | 7a0c3713 | Kostas Papadimitriou | #
|
29 | 64cd4730 | Antony Chazapis | # The views and conclusions contained in the software and
|
30 | 64cd4730 | Antony Chazapis | # documentation are those of the authors and should not be
|
31 | 64cd4730 | Antony Chazapis | # interpreted as representing official policies, either expressed
|
32 | 64cd4730 | Antony Chazapis | # or implied, of GRNET S.A.
|
33 | 64cd4730 | Antony Chazapis | |
34 | 64cd4730 | Antony Chazapis | from django.http import HttpResponse |
35 | 64cd4730 | Antony Chazapis | from django.utils import simplejson as json |
36 | 890c2065 | Sofia Papagiannaki | from django.views.decorators.csrf import csrf_exempt |
37 | 64cd4730 | Antony Chazapis | |
38 | ee7a2b87 | Christos Stavrakakis | from snf_django.lib import api |
39 | bd40abfa | Christos Stavrakakis | from snf_django.lib.api import faults |
40 | 890c2065 | Sofia Papagiannaki | |
41 | 09e7393c | Sofia Papagiannaki | from astakos.im.util import epoch |
42 | 79b5d61b | Sofia Papagiannaki | |
43 | 7f313da1 | Sofia Papagiannaki | from .util import ( |
44 | 7f313da1 | Sofia Papagiannaki | get_uuid_displayname_catalogs as get_uuid_displayname_catalogs_util,
|
45 | 7f313da1 | Sofia Papagiannaki | send_feedback as send_feedback_util,
|
46 | 7f313da1 | Sofia Papagiannaki | user_from_token) |
47 | 79b5d61b | Sofia Papagiannaki | |
48 | ee7a2b87 | Christos Stavrakakis | import logging |
49 | 3a9f4931 | Sofia Papagiannaki | logger = logging.getLogger(__name__) |
50 | ee7a2b87 | Christos Stavrakakis | |
51 | ee7a2b87 | Christos Stavrakakis | |
52 | ee7a2b87 | Christos Stavrakakis | @api.api_method(http_method="GET", token_required=True, user_required=False, |
53 | 79b5d61b | Sofia Papagiannaki | logger=logger) |
54 | ee7a2b87 | Christos Stavrakakis | @user_from_token # Authenticate user!! |
55 | 78c3a39c | Sofia Papagiannaki | def authenticate(request): |
56 | 53f980c2 | Sofia Papagiannaki | # Normal Response Codes: 200
|
57 | 18ffbee1 | Sofia Papagiannaki | # Error Response Codes: internalServerError (500)
|
58 | 18ffbee1 | Sofia Papagiannaki | # badRequest (400)
|
59 | 18ffbee1 | Sofia Papagiannaki | # unauthorised (401)
|
60 | 78c3a39c | Sofia Papagiannaki | user = request.user |
61 | 18ffbee1 | Sofia Papagiannaki | if not user: |
62 | bd40abfa | Christos Stavrakakis | raise faults.BadRequest('No user') |
63 | d492d8ae | Kostas Papadimitriou | |
64 | 18ffbee1 | Sofia Papagiannaki | response = HttpResponse() |
65 | 5a8eb6e7 | Sofia Papagiannaki | user_info = { |
66 | 5a8eb6e7 | Sofia Papagiannaki | 'id': user.id,
|
67 | c700f742 | Sofia Papagiannaki | 'username': user.username,
|
68 | e0fa2a89 | Kostas Papadimitriou | 'uuid': user.uuid,
|
69 | 5a8eb6e7 | Sofia Papagiannaki | 'email': [user.email],
|
70 | 5a8eb6e7 | Sofia Papagiannaki | 'name': user.realname,
|
71 | 210f4d0e | Kostas Papadimitriou | 'groups': list(user.groups.all().values_list('name', flat=True)), |
72 | 210f4d0e | Kostas Papadimitriou | 'auth_token': request.META.get('HTTP_X_AUTH_TOKEN'), |
73 | 5a8eb6e7 | Sofia Papagiannaki | 'auth_token_created': epoch(user.auth_token_created),
|
74 | 890c2065 | Sofia Papagiannaki | 'auth_token_expires': epoch(user.auth_token_expires)}
|
75 | 7bffb0bd | Kostas Papadimitriou | |
76 | 18ffbee1 | Sofia Papagiannaki | response.content = json.dumps(user_info) |
77 | 18ffbee1 | Sofia Papagiannaki | response['Content-Type'] = 'application/json; charset=UTF-8' |
78 | 18ffbee1 | Sofia Papagiannaki | response['Content-Length'] = len(response.content) |
79 | 18ffbee1 | Sofia Papagiannaki | return response
|
80 | 890c2065 | Sofia Papagiannaki | |
81 | bd40abfa | Christos Stavrakakis | |
82 | 890c2065 | Sofia Papagiannaki | @csrf_exempt
|
83 | ee7a2b87 | Christos Stavrakakis | @api.api_method(http_method="POST", token_required=True, user_required=False, |
84 | 79b5d61b | Sofia Papagiannaki | logger=logger) |
85 | ee7a2b87 | Christos Stavrakakis | @user_from_token # Authenticate user!! |
86 | 78c3a39c | Sofia Papagiannaki | def get_uuid_displayname_catalogs(request): |
87 | 890c2065 | Sofia Papagiannaki | # Normal Response Codes: 200
|
88 | 890c2065 | Sofia Papagiannaki | # Error Response Codes: internalServerError (500)
|
89 | 890c2065 | Sofia Papagiannaki | # badRequest (400)
|
90 | 890c2065 | Sofia Papagiannaki | # unauthorised (401)
|
91 | 890c2065 | Sofia Papagiannaki | |
92 | 6f1d4d03 | Sofia Papagiannaki | return get_uuid_displayname_catalogs_util(request)
|
93 | 890c2065 | Sofia Papagiannaki | |
94 | bd40abfa | Christos Stavrakakis | |
95 | 890c2065 | Sofia Papagiannaki | @csrf_exempt
|
96 | ee7a2b87 | Christos Stavrakakis | @api.api_method(http_method="POST", token_required=True, user_required=False, |
97 | 79b5d61b | Sofia Papagiannaki | logger=logger) |
98 | ee7a2b87 | Christos Stavrakakis | @user_from_token # Authenticate user!! |
99 | 78c3a39c | Sofia Papagiannaki | def send_feedback(request, email_template_name='im/feedback_mail.txt'): |
100 | 890c2065 | Sofia Papagiannaki | # Normal Response Codes: 200
|
101 | 890c2065 | Sofia Papagiannaki | # Error Response Codes: internalServerError (500)
|
102 | 890c2065 | Sofia Papagiannaki | # badRequest (400)
|
103 | 890c2065 | Sofia Papagiannaki | # unauthorised (401)
|
104 | 890c2065 | Sofia Papagiannaki | |
105 | 78c3a39c | Sofia Papagiannaki | return send_feedback_util(request, email_template_name) |