36 |
36 |
37 from soc.logic import accounts |
37 from soc.logic import accounts |
38 from soc.logic.models import user as user_logic |
38 from soc.logic.models import user as user_logic |
39 from soc.logic.models import request as request_logic |
39 from soc.logic.models import request as request_logic |
40 from soc.views import helper |
40 from soc.views import helper |
41 from soc.views.simple import requestLogin |
41 from soc.views import out_of_band |
42 |
42 |
43 import soc.views.out_of_band |
|
44 |
|
45 |
|
46 DEF_LOGIN_TMPL = 'soc/login.html' |
|
47 |
|
48 DEF_LOGIN_MSG_FMT = ugettext_lazy( |
|
49 'Please <a href="%(sign_in)s">sign in</a> to continue.') |
|
50 |
43 |
51 DEF_NO_USER_LOGIN_MSG_FMT = ugettext_lazy( |
44 DEF_NO_USER_LOGIN_MSG_FMT = ugettext_lazy( |
52 'Please create <a href="/user/edit">User Profile</a>' |
45 'Please create <a href="/user/edit">User Profile</a>' |
53 ' in order to view this page.') |
46 ' in order to view this page.') |
54 |
47 |
63 |
56 |
64 def allow(request): |
57 def allow(request): |
65 """Never returns an alternate HTTP response |
58 """Never returns an alternate HTTP response |
66 |
59 |
67 Args: |
60 Args: |
68 request: a django HTTP request |
61 request: a Django HTTP request |
69 """ |
62 """ |
70 |
63 |
71 return |
64 return |
72 |
65 |
73 def deny(request): |
66 def deny(request): |
74 """Returns an alternate HTTP response |
67 """Returns an alternate HTTP response |
75 |
68 |
76 Args: |
69 Args: |
77 request: a django HTTP request |
70 request: a Django HTTP request |
78 |
71 |
79 Returns: a subclass of django.http.HttpResponse which contains the |
72 Returns: a subclass of django.http.HttpResponse which contains the |
80 alternate response that should be returned by the calling view. |
73 alternate response that should be returned by the calling view. |
81 """ |
74 """ |
82 |
75 |
83 context = helper.responses.getUniversalContext(request) |
76 context = helper.responses.getUniversalContext(request) |
84 context['login_title'] = 'Access denied' |
77 context['title'] = 'Access denied' |
85 context['login_header'] = 'Access denied' |
|
86 context['login_message'] = DEF_PAGE_DENIED_MSG |
|
87 |
78 |
88 denied_response = helper.responses.respond(request, DEF_LOGIN_TMPL, context=context) |
79 raise out_of_band.AccessViolation(DEF_PAGE_DENIED_MSG, context=context) |
89 |
80 |
90 raise soc.views.out_of_band.AccessViolationResponse(denied_response) |
|
91 |
81 |
92 def checkIsLoggedIn(request): |
82 def checkIsLoggedIn(request): |
93 """Returns an alternate HTTP response if Google Account is not logged in. |
83 """Returns an alternate HTTP response if Google Account is not logged in. |
94 |
84 |
95 Args: |
85 Args: |
96 request: A Django HTTP request |
86 request: a Django HTTP request |
97 |
87 |
98 Raises: |
88 Raises: |
99 AccessViolationResponse: If the required authorization is not met. |
89 AccessViolationResponse: If the required authorization is not met. |
100 |
90 |
101 Returns: |
91 Returns: |
105 """ |
95 """ |
106 |
96 |
107 if users.get_current_user(): |
97 if users.get_current_user(): |
108 return |
98 return |
109 |
99 |
110 login_response = requestLogin(request, None, DEF_LOGIN_TMPL, |
100 raise out_of_band.LoginRequest() |
111 login_message_fmt=DEF_LOGIN_MSG_FMT) |
|
112 |
|
113 raise soc.views.out_of_band.AccessViolationResponse(login_response) |
|
114 |
101 |
115 |
102 |
116 def checkIsUser(request): |
103 def checkIsUser(request): |
117 """Returns an alternate HTTP response if Google Account has no User entity. |
104 """Returns an alternate HTTP response if Google Account has no User entity. |
118 |
105 |
119 Args: |
106 Args: |
120 request: A Django HTTP request |
107 request: a Django HTTP request |
121 |
108 |
122 Raises: |
109 Raises: |
123 AccessViolationResponse: If the required authorization is not met. |
110 AccessViolationResponse: If the required authorization is not met. |
124 |
111 |
125 Returns: |
112 Returns: |
134 {'account': users.get_current_user()}, unique=True) |
121 {'account': users.get_current_user()}, unique=True) |
135 |
122 |
136 if user: |
123 if user: |
137 return |
124 return |
138 |
125 |
139 login_response = requestLogin(request, None, DEF_LOGIN_TMPL, |
126 raise out_of_band.LoginRequest(message_fmt=DEF_NO_USER_LOGIN_MSG_FMT) |
140 login_message_fmt=DEF_NO_USER_LOGIN_MSG_FMT) |
|
141 |
|
142 raise soc.views.out_of_band.AccessViolationResponse(login_response) |
|
143 |
127 |
144 |
128 |
145 def checkIsDeveloper(request): |
129 def checkIsDeveloper(request): |
146 """Returns an alternate HTTP response if Google Account is not a Developer. |
130 """Returns an alternate HTTP response if Google Account is not a Developer. |
147 |
131 |
161 |
145 |
162 if accounts.isDeveloper(account=users.get_current_user()): |
146 if accounts.isDeveloper(account=users.get_current_user()): |
163 return None |
147 return None |
164 |
148 |
165 login_message_fmt = DEF_DEV_LOGOUT_LOGIN_MSG_FMT % { |
149 login_message_fmt = DEF_DEV_LOGOUT_LOGIN_MSG_FMT % { |
166 'role' : 'a site developer ', |
150 'role': 'a site developer '} |
167 } |
|
168 |
151 |
169 login_response = requestLogin(request, None, DEF_LOGIN_TMPL, |
152 raise out_of_band.LoginRequest(message_fmt=login_message_fmt) |
170 login_message_fmt=login_message_fmt) |
|
171 |
|
172 raise soc.views.out_of_band.AccessViolationResponse(login_response) |
|
173 |
153 |
174 |
154 |
175 def checkIsInvited(request, role): |
155 def checkIsInvited(request, role): |
176 """Returns an alternate HTTP response if Google Account has no Host entity |
156 """Returns an alternate HTTP response if Google Account has no Host entity |
177 for the specified program. |
157 for the specified program. |
203 |
183 |
204 if request: |
184 if request: |
205 return |
185 return |
206 |
186 |
207 login_message_fmt = DEF_DEV_LOGOUT_LOGIN_MSG_FMT % { |
187 login_message_fmt = DEF_DEV_LOGOUT_LOGIN_MSG_FMT % { |
208 'role' : 'a host for this program', |
188 'role': 'a host for this program'} |
209 } |
|
210 |
189 |
211 login_response = requestLogin(request, None, DEF_LOGIN_TMPL, |
190 raise out_of_band.LoginRequest(message_fmt=login_message_fmt) |
212 login_message_fmt=login_message_fmt) |
|
213 |
|
214 raise soc.views.out_of_band.AccessViolationResponse(login_response) |
|