Skip to content

Commit

Permalink
[#2315]: Changed cookie expirt default to 2 years (from 50) and give …
Browse files Browse the repository at this point in the history
…option to just be session length.

Picked from release-dgu1 branch

Conflicts:

	ckan/templates/user/login.html
  • Loading branch information
amercader committed May 23, 2012
1 parent efbf1dc commit 77d2a1f
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 13 deletions.
39 changes: 26 additions & 13 deletions ckan/templates/user/login.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,36 @@
<py:def function="page_heading">Login to ${g.site_title}</py:def>

<div py:match="content">
<form action="${h.url_for('/login_generic')}" method="post" class="simple-form" id="login">

<form action="${h.url_for('/login_generic')}" method="post" class="form-horizontal" id="login">
<fieldset>
<!--legend i18n:msg="site_title">Login</legend-->
<div class="control-group">
<label class="control-label" for="login">Login:</label>
<div class="controls">
<input type="text" class="input-xlarge" name="login" id="login" value="" />
</div>
</div>
<div class="control-group">
<label class="control-label" for="password">Password:</label>
<div class="controls">
<input type="password" name="password" id="password" value="" />
</div>
</div>
<div class="control-group">
<label class="control-label" for="remember">Remember me:</label>
<!-- optional 2 year cookie expiry -->
<div class="controls">
<input type="checkbox" name="remember" id="remember" value="63072000" checked="checked"/>
</div>
</div>

<label for="login">Login:</label>
<input type="text" name="login" value="" />
<br/>
<label for="password">Password:</label>
<input type="password" name="password" value="" />
<!-- 50 year timeout -->
<input type="hidden" name="remember" value="1576800000" />
<br/>
<div class="form-actions">
<button name="s" id="s" type="submit" class="btn btn-primary">Sign In</button>
&mdash;
<a href="${h.url_for('reset')}">Forgot your password?</a>
</div>
</fieldset>
<input name="s" id="s" type="submit" class="btn primary" value="${_('Sign In')}"/>
&mdash;
<a href="${h.url_for(controller='user', action='request_reset')}">Forgot your password?</a>
</form>
<br/>
<!-- Simple OpenID Selector -->
Expand Down
29 changes: 29 additions & 0 deletions ckan/tests/functional/test_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,11 +168,14 @@ def test_login(self):
fv = res.forms['login']
fv['login'] = str(username)
fv['password'] = str(password)
fv['remember'] = False
res = fv.submit()

# check cookies set
cookies = self._get_cookie_headers(res)
assert cookies
for cookie in cookies:
assert not 'max-age' in cookie.lower(), cookie

# first get redirected to user/logged_in
assert_equal(res.status, 302)
Expand Down Expand Up @@ -206,6 +209,32 @@ def test_login(self):
print res
assert 'testlogin' in res.body, res.body

def test_login_remembered(self):
# create test user
username = u'testlogin2'
password = u'letmein'
CreateTestData.create_user(name=username,
password=password)
user = model.User.by_name(username)

# do the login
offset = url_for(controller='user', action='login')
res = self.app.get(offset)
fv = res.forms['login']
fv['login'] = str(username)
fv['password'] = str(password)
fv['remember'] = True
res = fv.submit()

# check cookies set
cookies = self._get_cookie_headers(res)
assert cookies
# check cookie is remembered via Max-Age and Expires
# (both needed for cross-browser compatibility)
for cookie in cookies:
assert 'Max-Age=63072000;' in cookie, cookie
assert 'Expires=' in cookie, cookie

def test_login_wrong_password(self):
# create test user
username = u'testloginwrong'
Expand Down

0 comments on commit 77d2a1f

Please sign in to comment.