Compare commits
No commits in common. "fca744f17abbb7c52c9dd533e727eeb3bdfcc077" and "3d1c1d7538163142e76978693afce8fe96e5b806" have entirely different histories.
fca744f17a
...
3d1c1d7538
|
@ -54,14 +54,3 @@ func GetValueByKey(key string) ([]byte, error) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
return c.Get(ctx, key).Bytes()
|
return c.Get(ctx, key).Bytes()
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetJSON(key string, result interface{}) bool {
|
|
||||||
v, err := GetValueByKey(key)
|
|
||||||
if err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if err = json.Unmarshal(v, result); err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
package cache
|
|
||||||
|
|
||||||
const (
|
|
||||||
keyPrefix = "usermngmt_"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
KeyLoginFailedTimes = keyPrefix + "login_failed_time"
|
|
||||||
)
|
|
|
@ -1,12 +1,5 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
import "time"
|
|
||||||
|
|
||||||
const (
|
|
||||||
MaximumLoginFailedTime = 5
|
|
||||||
LoginFailedBlockedDuration = time.Hour
|
|
||||||
)
|
|
||||||
|
|
||||||
type Configuration struct {
|
type Configuration struct {
|
||||||
EmailIsUnique bool
|
EmailIsUnique bool
|
||||||
PhoneNumberIsUnique bool
|
PhoneNumberIsUnique bool
|
||||||
|
|
|
@ -29,6 +29,4 @@ const (
|
||||||
// Incorrect
|
// Incorrect
|
||||||
|
|
||||||
ErrorIncorrectPassword = "mật khẩu không chính xác"
|
ErrorIncorrectPassword = "mật khẩu không chính xác"
|
||||||
ErrorInvalidLogin = "thông tin đăng nhập không đúng"
|
|
||||||
ErrorExceedMaximumLoginFail = "bạn đã đăng nhập sai thông tin quá số lần cho phép"
|
|
||||||
)
|
)
|
||||||
|
|
|
@ -579,21 +579,15 @@ func ChangeAllUsersStatus(roleID, status string) error {
|
||||||
func LoginWithEmailAndPassword(email, password string) (result model.User, err error) {
|
func LoginWithEmailAndPassword(email, password string) (result model.User, err error) {
|
||||||
var (
|
var (
|
||||||
ctx = context.Background()
|
ctx = context.Background()
|
||||||
numOfLoginFail int
|
|
||||||
)
|
)
|
||||||
k := cache.KeyLoginFailedTimes + email
|
|
||||||
// process block if reach maximum of login failed
|
|
||||||
if ok := cache.GetJSON(k, &numOfLoginFail); ok && numOfLoginFail >= config.MaximumLoginFailedTime {
|
|
||||||
return model.User{}, errors.New(internal.ErrorExceedMaximumLoginFail)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Validate email, password
|
// Validate email, password
|
||||||
if email == "" {
|
if email == "" {
|
||||||
err = errors.New(internal.ErrorInvalidLogin)
|
err = errors.New(internal.ErrorInvalidEmail)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if password == "" {
|
if password == "" {
|
||||||
err = errors.New(internal.ErrorInvalidLogin)
|
err = errors.New(internal.ErrorInvalidPassword)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -603,14 +597,13 @@ func LoginWithEmailAndPassword(email, password string) (result model.User, err e
|
||||||
"deleted": false,
|
"deleted": false,
|
||||||
})
|
})
|
||||||
if user.ID.IsZero() {
|
if user.ID.IsZero() {
|
||||||
err = errors.New(internal.ErrorInvalidLogin)
|
err = errors.New(internal.ErrorNotFoundUser)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check Password
|
// Check Password
|
||||||
if !internal.CheckPasswordHash(password, user.HashedPassword) {
|
if !internal.CheckPasswordHash(password, user.HashedPassword) {
|
||||||
err = errors.New(internal.ErrorInvalidLogin)
|
err = errors.New(internal.ErrorIncorrectPassword)
|
||||||
cache.SetKeyValue(k, numOfLoginFail+1, config.LoginFailedBlockedDuration)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue