mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
fix: suspended users should not be able to login
Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
parent
e43e1c6d20
commit
7cc20cd9a4
2 changed files with 25 additions and 3 deletions
|
@ -46,13 +46,19 @@ async def login_post(request: Request,
|
||||||
raise HTTPException(status_code=HTTPStatus.BAD_REQUEST,
|
raise HTTPException(status_code=HTTPStatus.BAD_REQUEST,
|
||||||
detail=_("Bad Referer header."))
|
detail=_("Bad Referer header."))
|
||||||
|
|
||||||
|
with db.begin():
|
||||||
user = db.query(User).filter(
|
user = db.query(User).filter(
|
||||||
or_(User.Username == user, User.Email == user)
|
or_(User.Username == user, User.Email == user)
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
if not user:
|
if not user:
|
||||||
return await login_template(request, next,
|
return await login_template(request, next,
|
||||||
errors=["Bad username or password."])
|
errors=["Bad username or password."])
|
||||||
|
|
||||||
|
if user.Suspended:
|
||||||
|
return await login_template(request, next,
|
||||||
|
errors=["Account Suspended"])
|
||||||
|
|
||||||
cookie_timeout = cookies.timeout(remember_me)
|
cookie_timeout = cookies.timeout(remember_me)
|
||||||
sid = user.login(request, passwd, cookie_timeout)
|
sid = user.login(request, passwd, cookie_timeout)
|
||||||
if not sid:
|
if not sid:
|
||||||
|
|
|
@ -14,6 +14,7 @@ from aurweb.asgi import app
|
||||||
from aurweb.models.account_type import USER_ID
|
from aurweb.models.account_type import USER_ID
|
||||||
from aurweb.models.session import Session
|
from aurweb.models.session import Session
|
||||||
from aurweb.models.user import User
|
from aurweb.models.user import User
|
||||||
|
from aurweb.testing.html import get_errors
|
||||||
|
|
||||||
# Some test global constants.
|
# Some test global constants.
|
||||||
TEST_USERNAME = "test"
|
TEST_USERNAME = "test"
|
||||||
|
@ -79,6 +80,21 @@ def test_login_logout(client: TestClient, user: User):
|
||||||
assert "AURSID" not in response.cookies
|
assert "AURSID" not in response.cookies
|
||||||
|
|
||||||
|
|
||||||
|
def test_login_suspended(client: TestClient, user: User):
|
||||||
|
with db.begin():
|
||||||
|
user.Suspended = 1
|
||||||
|
|
||||||
|
data = {
|
||||||
|
"user": user.Username,
|
||||||
|
"passwd": "testPassword",
|
||||||
|
"next": "/"
|
||||||
|
}
|
||||||
|
with client as request:
|
||||||
|
resp = request.post("/login", data=data)
|
||||||
|
errors = get_errors(resp.text)
|
||||||
|
assert errors[0].text.strip() == "Account Suspended"
|
||||||
|
|
||||||
|
|
||||||
def test_login_email(client: TestClient, user: user):
|
def test_login_email(client: TestClient, user: user):
|
||||||
post_data = {
|
post_data = {
|
||||||
"user": user.Email,
|
"user": user.Email,
|
||||||
|
|
Loading…
Add table
Reference in a new issue