implement account lockout after 3 failed login attempts with 5-minute cooldown period
This commit is contained in:
@@ -6,6 +6,25 @@ RETURNING *;
|
||||
-- name: GetUserByUsername :one
|
||||
SELECT * FROM users WHERE username = $1;
|
||||
|
||||
-- name: ResetLoginFailures :exec
|
||||
UPDATE users
|
||||
SET failed_login_attempts = 0,
|
||||
locked_until = NULL
|
||||
WHERE username = $1;
|
||||
|
||||
-- name: RecordFailedLogin :one
|
||||
UPDATE users
|
||||
SET failed_login_attempts = CASE
|
||||
WHEN failed_login_attempts + 1 >= 3 THEN 3
|
||||
ELSE failed_login_attempts + 1
|
||||
END,
|
||||
locked_until = CASE
|
||||
WHEN failed_login_attempts + 1 >= 3 THEN NOW() + INTERVAL '5 minutes'
|
||||
ELSE locked_until
|
||||
END
|
||||
WHERE username = $1
|
||||
RETURNING failed_login_attempts, locked_until;
|
||||
|
||||
-- name: GetDeliveriesByDate :many
|
||||
SELECT * FROM deliveries WHERE date = $1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user