init project
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"context"
|
||||
"furtuna-be/internal/entity"
|
||||
|
||||
"go.uber.org/zap"
|
||||
|
||||
"furtuna-be/internal/common/errors"
|
||||
"furtuna-be/internal/common/logger"
|
||||
"furtuna-be/internal/repository"
|
||||
)
|
||||
|
||||
type AuthServiceImpl struct {
|
||||
authRepo repository.Auth
|
||||
crypto repository.Crypto
|
||||
}
|
||||
|
||||
func New(authRepo repository.Auth, crypto repository.Crypto) *AuthServiceImpl {
|
||||
return &AuthServiceImpl{
|
||||
authRepo: authRepo,
|
||||
crypto: crypto,
|
||||
}
|
||||
}
|
||||
|
||||
func (u *AuthServiceImpl) AuthenticateUser(ctx context.Context, email, password string) (*entity.AuthenticateUser, error) {
|
||||
user, err := u.authRepo.CheckExistsUserAccount(ctx, email)
|
||||
if err != nil {
|
||||
logger.ContextLogger(ctx).Error("error when get user", zap.Error(err))
|
||||
return nil, errors.ErrorInternalServer
|
||||
}
|
||||
|
||||
if user == nil {
|
||||
return nil, errors.ErrorUserIsNotFound
|
||||
}
|
||||
|
||||
if ok := u.crypto.CompareHashAndPassword(user.Password, password); !ok {
|
||||
return nil, errors.ErrorUserInvalidLogin
|
||||
}
|
||||
|
||||
signedToken, err := u.crypto.GenerateJWT(user.ToUser())
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return user.ToUserAuthenticate(signedToken), nil
|
||||
}
|
||||
Reference in New Issue
Block a user