You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.0 KiB
Go

3 weeks ago
package admin
import (
"cls-server/internal/application/crypto"
"cls-server/internal/domain/admin"
"cls-server/pkg/logger"
)
type AdminService struct {
repo admin.AdminRepository
phoneEncryption *crypto.PhoneEncryptionService
passwordHash *crypto.PasswordHashService
log logger.Logger
}
func NewAdminService(repo admin.AdminRepository,
phoneEncryption *crypto.PhoneEncryptionService,
passwordHash *crypto.PasswordHashService,
log logger.New) *AdminService {
return &AdminService{repo,
phoneEncryption,
passwordHash,
log("cls-server:application:admin")}
}
func (a *AdminService) Register(dto *AdminDto) error {
err := a.repo.Create(&admin.Admin{
Username: dto.Username,
Phone: dto.Phone,
Password: dto.Password,
Salt: a.passwordHash.GenerateSalt(dto.Username, dto.Password, dto.Phone),
})
if err != nil {
a.log.Error(err)
}
return err
}
func (a *AdminService) GetAdminProfile(data *AdminDto) error {
if data.Username == "" {
return nil
}
au, err := a.repo.FindAdminByUsername(data.Username)
if err != nil {
a.log.Error(err)
return err
}
sP, err := a.phoneEncryption.StringPhone(au.Phone)
if err != nil {
a.log.Error(err)
sP = ""
}
data.AdminId = au.Id
data.Phone = sP
return nil
}
func (a *AdminService) UpdatePassword(dto *AdminDto) error {
ad, err := a.repo.FindAdminByUsername(dto.Username)
if err != nil {
a.log.Error(err.Error())
return err
}
ad.Password, err = a.passwordHash.Hash(dto.Password)
if err != nil {
a.log.Error(err.Error())
return err
}
err = a.repo.UpdatePassword(ad)
if err != nil {
a.log.Error(err.Error())
}
return err
}
func (a *AdminService) UpdatePhone(dto *AdminDto) error {
ad, err := a.repo.FindAdminByUsername(dto.Username)
if err != nil {
a.log.Error(err.Error())
return err
}
ad.Phone, err = a.phoneEncryption.Encrypt(dto.Phone)
if err != nil {
a.log.Error(err.Error())
return err
}
err = a.repo.UpdatePhone(ad)
if err != nil {
a.log.Error(err.Error())
}
return err
}