12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package service
- import (
- "github.com/pkg/errors"
- "gorm.io/gorm"
- "sghgogs.com/micro/common"
- "sghgogs.com/micro/common/errorcode"
- pb "sghgogs.com/micro/shopping-service/proto"
- "sghgogs.com/micro/shopping-service/utils"
- )
- func (svc *Service) Login(auth *pb.LoginRequest) (*pb.User, int64, error) {
- var user *pb.User
- group, err := svc.Repository.GetUserGroup(&pb.GetUserGroupRequest{Code: auth.Code})
- if err != nil {
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return user, 0, errorcode.New(svc.Namespace, common.ErrorMessage[common.InvalidCodeError], 500)
- }
- return user, 0, errorcode.New(svc.Namespace, err.Error(), 500)
- }
- if !utils.IsUserGroup(group.ID) {
- return user, 0, errorcode.New(svc.Namespace, common.ErrorMessage[common.NotAssignedError], 500)
- }
- if utils.UserUserGroupID == group.ID {
- if exists, err := svc.Repository.IsUserExists(auth.Username); err != nil {
- return user, 0, errorcode.New(svc.Namespace, err.Error(), 500)
- } else {
- if !exists {
- return user, 0, errorcode.New(svc.Namespace, common.ErrorMessage[common.AccountDoesNotExist], 400)
- }
- }
- }
- if utils.AdminUserGroupID == group.ID {
- if exists, err := svc.Repository.IsAdminUserExists(auth.Username); err != nil {
- return user, 0, errorcode.New(svc.Namespace, err.Error(), 500)
- } else {
- if !exists {
- return user, 0, errorcode.New(svc.Namespace, common.ErrorMessage[common.AccountDoesNotExist], 400)
- }
- }
- }
- login, err := svc.Repository.Login(auth.Username)
- if err != nil {
- return user, 0, errorcode.New(svc.Namespace, err.Error(), 500)
- }
- if !utils.CheckPasswordHash(auth.Password, login.Password) {
- return user, 0, errorcode.BadRequest(svc.Namespace, common.ErrorMessage[common.IncorrectPasswordErrorCode])
- }
- res := svc.getUserRes(&login)
- if utils.AdminUserGroupID == group.ID {
- res.Roles = svc.getBaseRoleRes(login.Roles)
- }
- return res, group.ID, nil
- }
- func (svc *Service) Profile(groupID int64, userID int64) (*pb.User, error) {
- // Profile
- profile, err := svc.Repository.Profile(userID)
- if err != nil {
- return &pb.User{}, errorcode.New(svc.Namespace, err.Error(), 500)
- }
- res := svc.getUserRes(&profile)
- if utils.AdminUserGroupID == groupID {
- res.Roles = svc.getBaseRoleRes(profile.Roles)
- }
- return res, nil
- }
|