26 lines
609 B
Go
26 lines
609 B
Go
package services
|
|
|
|
import (
|
|
"errors"
|
|
"gitea.zjmud.xyz/phyer/rbac/models"
|
|
"gitea.zjmud.xyz/phyer/rbac/repositories"
|
|
"gitea.zjmud.xyz/phyer/rbac/utils"
|
|
"golang.org/x/crypto/bcrypt"
|
|
)
|
|
|
|
func Login(username, password string) (string, error) {
|
|
user, err := repositories.GetUserByUsername(username)
|
|
if err != nil {
|
|
return "", errors.New("invalid credentials")
|
|
}
|
|
err = bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password))
|
|
if err != nil {
|
|
return "", errors.New("invalid credentials")
|
|
}
|
|
token, err := utils.GenerateJWT(user.ID)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return token, nil
|
|
}
|