<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/b3a51c3987be234ec43dab75fd54311c5745d595" style="text-decoration: none; font-weight: bold; color: #573;">db: always match user emails case insensitively  This commit removes case-sensitive email matching. It also adds a couple of tests which fail, to demonstrate...</a></h1>
<div id="body">
andrewsh committed on 2016-01-30 11:15:23<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/b3a51c3987be234ec43dab75fd54311c5745d595">b3a51c39</a><pre>db: always match user emails case insensitively

This commit removes case-sensitive email matching.
It also adds a couple of tests which fail, to demonstrate a defect in the
current implementation (using ILIKE matching instead of case-insensitive
equality comparison).

 M kallithea/controllers/api/api.py (1 lines added, 1 lines removed)
 M kallithea/lib/helpers.py (1 lines added, 1 lines removed)
 M kallithea/model/db.py (4 lines added, 10 lines removed)
 M kallithea/model/validators.py (2 lines added, 2 lines removed)
 M kallithea/tests/models/test_users.py (10 lines added, 0 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/69e7385231079197e28e197da589ea082b45a00d" style="text-decoration: none; font-weight: bold; color: #573;">db: match case-insensitively using func.lower, not ilike  ilike() uses SQL ILIKE operator internally, which means it interprets '%' and '_' in the match patt...</a></h1>
<div id="body">
andrewsh committed on 2016-01-31 15:51:32<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/69e7385231079197e28e197da589ea082b45a00d">69e73852</a><pre>db: match case-insensitively using func.lower, not ilike

ilike() uses SQL ILIKE operator internally, which means it interprets
'%' and '_' in the match pattern as wildcards. Instead of ilike(), it's
better to turn both operands to the lower case and compare them.

This also unbreaks the test case introduced in 13d0fe6f751a.

 M kallithea/model/db.py (5 lines added, 5 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/0d213881f2ca246b5ff5c23495dc539428209b3a" style="text-decoration: none; font-weight: bold; color: #573;">tests: add tests for case (in)sensitive user selections</a></h1>
<div id="body">
andrewsh committed on 2016-01-31 23:36:09<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/0d213881f2ca246b5ff5c23495dc539428209b3a">0d213881</a><pre>tests: add tests for case (in)sensitive user selections

 M kallithea/tests/models/test_users.py (2 lines added, 0 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/5bd63512505e0503aea2b7547c2a704fc63a8c3d" style="text-decoration: none; font-weight: bold; color: #573;">db: add User.get_by_username_or_email</a></h1>
<div id="body">
andrewsh committed on 2016-01-30 14:59:33<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/5bd63512505e0503aea2b7547c2a704fc63a8c3d">5bd63512</a><pre>db: add User.get_by_username_or_email

 M kallithea/model/db.py (14 lines added, 0 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/2c3941817a8eb4f0d21e81692cc22cb0982c3797" style="text-decoration: none; font-weight: bold; color: #573;">auth: authenticate using either username or email address  Use User.get_by_username_or_email() in get_user. In authenticate(), update username if get_user su...</a></h1>
<div id="body">
andrewsh committed on 2016-01-30 15:36:26<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/2c3941817a8eb4f0d21e81692cc22cb0982c3797">2c394181</a><pre>auth: authenticate using either username or email address

Use User.get_by_username_or_email() in get_user.
In authenticate(), update username if get_user succeeds.

The point of this change is that the web login is a complex thing that
includes, apart the authentication itself, form validation and a bunch of
other things.

This change on its own makes it possible to authenticate a user using its email
address, but that on its own isn't enough for web login or git/hg auth.

 M kallithea/lib/auth_modules/__init__.py (9 lines added, 2 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/b24e015a4174e5633ee131d6776ed574dfa4be07" style="text-decoration: none; font-weight: bold; color: #573;">auth: allow web login with email addresses  Let users log in using their email addresses instead of their user names. This only applies to the web login, not...</a></h1>
<div id="body">
andrewsh committed on 2016-01-30 15:37:43<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/b24e015a4174e5633ee131d6776ed574dfa4be07">b24e015a</a><pre>auth: allow web login with email addresses

Let users log in using their email addresses instead of their user names.
This only applies to the web login, not git+http or hg+http protocols.

 M kallithea/controllers/login.py (1 lines added, 1 lines removed)
 M kallithea/model/validators.py (1 lines added, 1 lines removed)
 M kallithea/tests/functional/test_login.py (11 lines added, 0 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/52356a58c1f6a828eb64f8236ce50dbc830afbe2" style="text-decoration: none; font-weight: bold; color: #573;">middleware: allow git and hg users to use email address instead of the username  This commit also replaces __get_user('default') with a call to a more widely...</a></h1>
<div id="body">
andrewsh committed on 2016-01-30 15:38:26<br />branch: default<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/52356a58c1f6a828eb64f8236ce50dbc830afbe2">52356a58</a><pre>middleware: allow git and hg users to use email address instead of the username

This commit also replaces __get_user('default') with a call to a more widely
used User.get_default_user() function, and removes no longer really used
__get_user() methods from both SimpleHg and SimpleGit.

 M kallithea/lib/middleware/simplegit.py (2 lines added, 5 lines removed)
 M kallithea/lib/middleware/simplehg.py (2 lines added, 5 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
  <head>
</head>
<body style='font: 12pt Roboto, "DejaVu Sans", Arial; margin-left: 5px; margin-right: 5px;'>
<div id="entry">
<h1 style='font: 12pt Roboto, "DejaVu Sans", Arial; display:block; background: #c0cf88; border-bottom: solid 3px #573; padding: 5px; margin-top: 0px; color: #573;'><a href="https://kallithea-scm.org/repos/kallithea/changeset/460520415b67b03756f325ed2709f5879be505ef" style="text-decoration: none; font-weight: bold; color: #573;">pullrequest: linkify changesets in html notification email to reviewers  Make it possible to open a given changeset immediately, instead of having to go to t...</a></h1>
<div id="body">
patrickdp committed on 2016-02-07 11:25:55<br />branch: default<br />tag: tip<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/460520415b67b03756f325ed2709f5879be505ef">46052041</a><pre>pullrequest: linkify changesets in html notification email to reviewers

Make it possible to open a given changeset immediately, instead of having to
go to the pullrequest first.

 M kallithea/model/pull_request.py (1 lines added, 0 lines removed)
 M kallithea/templates/email_templates/pull_request.html (1 lines added, 1 lines removed)</pre>
</div>
</div>
</div>
</body>
</html>