Changeset 10403 for main/waeup.cas/trunk/waeup/cas
- Timestamp:
- 5 Jul 2013, 09:41:43 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.cas/trunk/waeup/cas/server.py
r10400 r10403 103 103 """Check whether `cookie_value` represents a valid ticket granting 104 104 ticket in `db`. 105 106 `cookie_value` is a string representing a ticket granting ticket 107 maybe stored in `db`. 108 109 If a respective cookie can be found, a 110 :class:`waeup.cas.db.TicketGrantingCookie` is returend. Else 111 ``None`` is returned. 105 112 """ 106 113 if cookie_value is None: 107 return False114 return None 108 115 try: 109 116 # turn value into unicode (py2.x) / str (py3.x) … … 119 126 120 127 128 def get_template(name): 129 path = os.path.join(template_dir, name) 130 if os.path.isfile(path): 131 return open(path, 'r').read() 132 return None 133 134 135 def login_redirect_service(db, service): 136 """Return a response redirecting to a service via HTTP 303 See Other. 137 """ 138 # safely redirect to service given 139 st = create_service_ticket(service) 140 db.add(st) 141 service = '%s?ticket=%s' % (service, st.ticket) 142 html = get_template('login_service_redirect.html') 143 html = html.replace('SERVICE_URL', service) 144 resp = exc.HTTPSeeOther(location=service) 145 # try to forbid caching of any type 146 resp.cache_control = 'no-store' 147 resp.pragma = 'no-cache' 148 # some arbitrary date in the past 149 resp.expires = 'Thu, 01 Dec 1994 16:00:00 GMT' 150 resp.text = html 151 return resp 152 153 154 def login_success_no_service(db, msg='', sso=False): 155 """Show logged-in screen after successful auth. 156 157 `sso` must be a boolean indicating whether login happened via 158 credentials (``False``) or via cookie (``True``). 159 160 Returns a response. 161 """ 162 # show logged-in screen 163 html = get_template('login_successful.html') 164 html = html.replace('MSG_TEXT', msg) 165 resp = Response(html) 166 if not sso: 167 resp = set_session_cookie(resp, db) 168 return resp 169 170 121 171 class CASServer(object): 122 172 """A WSGI CAS server. … … 161 211 password = req.POST.get('password', None) 162 212 valid_lt = check_login_ticket(self.db, req.POST.get('lt')) 163 tgc = req.cookies.get('cas-tgc', None) 164 tgc = check_session_cookie(self.db, tgc) 213 tgc = check_session_cookie(self.db, req.cookies.get('cas-tgc', None)) 165 214 if username and password and valid_lt or tgc: 166 215 # act as credentials acceptor … … 175 224 if service is None: 176 225 # show logged-in screen 177 html = self._get_template('login_successful.html') 178 html = html.replace('MSG_TEXT', msg) 179 resp = Response(html) 180 if not tgc: 181 resp = set_session_cookie(resp, self.db) 182 return resp 226 sso = (tgc is not None) 227 return login_success_no_service(self.db, msg, sso) 183 228 else: 184 229 # safely redirect to service given 185 st = create_service_ticket(service) 186 self.db.add(st) 187 service = '%s?ticket=%s' % (service, st.ticket) 188 html = self._get_template('login_service_redirect.html') 189 html = html.replace('SERVICE_URL', service) 190 resp = exc.HTTPSeeOther(location=service) 191 resp.cache_control = 'no-store' 192 resp.pragma = 'no-cache' 193 # some arbitrary date in the past 194 resp.expires = 'Thu, 01 Dec 1994 16:00:00 GMT' 195 resp.text = html 196 return resp 230 return login_redirect_service(self.db, service) 197 231 else: 198 232 # login failed
Note: See TracChangeset for help on using the changeset viewer.