Fixes in login
This commit is contained in:
parent
a63ab64876
commit
cd0fdacbb7
2 changed files with 26 additions and 7 deletions
|
|
@ -23,6 +23,12 @@ login_tries=5
|
||||||
if hasattr(config, 'login_tries'):
|
if hasattr(config, 'login_tries'):
|
||||||
login_tries=config.login_tries
|
login_tries=config.login_tries
|
||||||
|
|
||||||
|
seconds_login=300
|
||||||
|
|
||||||
|
if hasattr(config, 'seconds_login'):
|
||||||
|
seconds_login=config.seconds_login
|
||||||
|
|
||||||
|
|
||||||
#useradmin.create_forms()
|
#useradmin.create_forms()
|
||||||
|
|
||||||
#useradmin.safe_query=True
|
#useradmin.safe_query=True
|
||||||
|
|
@ -76,7 +82,7 @@ class UserAdmin(BaseModel):
|
||||||
remember_login: bool | None = None
|
remember_login: bool | None = None
|
||||||
|
|
||||||
class ResponseDataLogin(ResponseData):
|
class ResponseDataLogin(ResponseData):
|
||||||
login_tries: bool
|
no_login: bool
|
||||||
|
|
||||||
@admin_app.post('/login')
|
@admin_app.post('/login')
|
||||||
def check_login_admin(user: UserAdmin, request: Request) -> ResponseDataLogin:
|
def check_login_admin(user: UserAdmin, request: Request) -> ResponseDataLogin:
|
||||||
|
|
@ -106,7 +112,7 @@ def check_login_admin(user: UserAdmin, request: Request) -> ResponseDataLogin:
|
||||||
|
|
||||||
db.close()
|
db.close()
|
||||||
|
|
||||||
return {'error': error, 'message': message, 'login_tries': no_login}
|
return {'error': error, 'message': message, 'no_login': no_login}
|
||||||
|
|
||||||
class UserSignup(BaseModel):
|
class UserSignup(BaseModel):
|
||||||
username: str = Field(description="The username of new user", min_length=4, pattern=r"\w+")
|
username: str = Field(description="The username of new user", min_length=4, pattern=r"\w+")
|
||||||
|
|
@ -183,15 +189,15 @@ def check_login_tries(request, db):
|
||||||
|
|
||||||
you_cannot_login=0
|
you_cannot_login=0
|
||||||
|
|
||||||
arr_try=logintries.set_conditions('WHERE ip=%s', [ip]).select_a_row_where()
|
|
||||||
|
|
||||||
now_str=now()
|
now_str=now()
|
||||||
date_now=format_local_strtime('YYYY-MM-DD HH:mm:ss', now_str)
|
date_now=format_local_strtime('YYYY-MM-DD HH:mm:ss', now_str)
|
||||||
|
|
||||||
date_check=format_local_strtime('YYYY-MM-DD HH:mm:ss', timestamp_to_datetime(obtain_timestamp(now_str)-300))
|
date_check=format_local_strtime('YYYY-MM-DD HH:mm:ss', timestamp_to_datetime(obtain_timestamp(now_str)-seconds_login))
|
||||||
|
|
||||||
logintries.query('delete from logintries where last_login<%s', [date_check])
|
logintries.query('delete from logintries where last_login<%s', [date_check])
|
||||||
|
|
||||||
|
arr_try=logintries.set_conditions('WHERE ip=%s', [ip]).select_a_row_where()
|
||||||
|
|
||||||
if arr_try:
|
if arr_try:
|
||||||
|
|
||||||
if arr_try['num_tries']<login_tries:
|
if arr_try['num_tries']<login_tries:
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,8 @@
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="password_form" class="form-label">Password</label>
|
<label for="password_form" class="form-label">Password</label>
|
||||||
<input type="password" class="form-control form-control-lg has-validation" id="password_form" name="password" autocomplete="off" required>
|
<input type="password" class="form-control form-control-lg has-validation" id="password_form" name="password" autocomplete="off" required>
|
||||||
<div class="invalid-feedback">
|
<div class="invalid-feedback" id="login_invalid">
|
||||||
${tlang('You need a valid username and password')}
|
${tlang('Error: username or password invalid')}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3 form-check">
|
<div class="mb-3 form-check">
|
||||||
|
|
@ -132,6 +132,19 @@
|
||||||
$('#username_form').get(0).setCustomValidity("${tlang('Error: username or password invalid')}");
|
$('#username_form').get(0).setCustomValidity("${tlang('Error: username or password invalid')}");
|
||||||
$('#password_form').get(0).setCustomValidity("${tlang('Error: username or password invalid')}");
|
$('#password_form').get(0).setCustomValidity("${tlang('Error: username or password invalid')}");
|
||||||
|
|
||||||
|
console.log(JSON.stringify(data));
|
||||||
|
|
||||||
|
if(data.no_login) {
|
||||||
|
|
||||||
|
$('#login_invalid').html("${tlang('Error: you try login excessive times, please wait some minutes for try again')}");
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
$('#login_invalid').html("${tlang('Error: username or password invalid')}");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
$('#login_submit').prop('disabled', false);
|
$('#login_submit').prop('disabled', false);
|
||||||
|
|
||||||
$('#loader-div').hide();
|
$('#loader-div').hide();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue