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
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
|
||
|
}
|