Skip to content

Commit

Permalink
Merge pull request #4765 from camptocamp/improve_login
Browse files Browse the repository at this point in the history
Improve login
  • Loading branch information
gberaudo authored Mar 19, 2019
2 parents e7d4a7a + 089b5fa commit 8da3eec
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 7 deletions.
9 changes: 4 additions & 5 deletions geoportal/c2cgeoportal_geoportal/views/entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -1518,8 +1518,9 @@ def login(self):
raise HTTPBadRequest("See server logs for details")
username = self.request.registry.validate_user(self.request, login, password)
if username is not None:
user = models.DBSession.query(static.User).filter(static.User.username == username).one()
user.update_last_login()
user = models.DBSession.query(static.User).filter(static.User.username == username).one_or_none()
if user:
user.update_last_login()
headers = remember(self.request, username)
log.info("User '{0!s}' logged in.".format(username))
came_from = self.request.params.get("came_from")
Expand All @@ -1534,14 +1535,12 @@ def login(self):
)), headers=headers),
)
else:
raise HTTPBadRequest("See server logs for details")
raise HTTPForbidden("See server logs for details")

@view_config(route_name="logout")
def logout(self):
headers = forget(self.request)

# if there is no user to log out, we send a 404 Not Found (which
# is the status code that applies best here)
if not self.request.user:
log.info("Logout on non login user.")
raise HTTPBadRequest("See server logs for details")
Expand Down
4 changes: 2 additions & 2 deletions geoportal/tests/functional/test_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ def teardown_method(self, _):
#

def test_login(self):
from pyramid.httpexceptions import HTTPBadRequest
from pyramid.httpexceptions import HTTPForbidden
from c2cgeoportal_geoportal.views.entry import Entry

request = self._create_request_obj(params={
Expand Down Expand Up @@ -247,7 +247,7 @@ def test_login(self):
"password": "bad password",
})
entry = Entry(request)
self.assertRaises(HTTPBadRequest, entry.login)
self.assertRaises(HTTPForbidden, entry.login)

def test_logout_no_auth(self):
from pyramid.httpexceptions import HTTPBadRequest
Expand Down

0 comments on commit 8da3eec

Please sign in to comment.