<!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/13d0fe6f751ad200fa64921d83679657c6fb1a50" 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/13d0fe6f751ad200fa64921d83679657c6fb1a50">13d0fe6f</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 (3 lines added, 9 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/d119e37bbe96b652a0b64b437de971763d1e3d81" 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/d119e37bbe96b652a0b64b437de971763d1e3d81">d119e37b</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 (6 lines added, 6 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/4303f0c73291c194e1c6a6ccdb90d7ce447e4604" 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/4303f0c73291c194e1c6a6ccdb90d7ce447e4604">4303f0c7</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/fec4cedfc5fdcd57a6ddfe33c9f64159ac6f41bb" 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/fec4cedfc5fdcd57a6ddfe33c9f64159ac6f41bb">fec4cedf</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/c496d9849d5acee5affb705c993b81498fd049f9" 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/c496d9849d5acee5affb705c993b81498fd049f9">c496d984</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.

 M kallithea/lib/auth_modules/__init__.py (9 lines added, 3 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/442889731be64a8f2480490e4d171d38863bafce" 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/442889731be64a8f2480490e4d171d38863bafce">44288973</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/0825e2c972dac95355ac534f0ff1b8057d2e7623" 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 />tag: tip<br />changeset: <a href="https://kallithea-scm.org/repos/kallithea/changeset/0825e2c972dac95355ac534f0ff1b8057d2e7623">0825e2c9</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>