feat: remove authentication requirement for avatar and image upload endpoints;
fix: remove 500 error responses from upload endpoints; fix: return validation error strings instead of error lists; fix: handle invalid avatar upload IDs with 400 Bad Request response; fix: add missing S3Controller to controller initialization; fix: change avatar_upload_id to string type and update validation rules; chore: add license header to smtp.go; refactor: replace manual proxy implementation with httputil.ReverseProxy; fix: inject S3Service dependency into ProfileService; fix: set color and color_grad fields during profile update; fix: correct DTO mapping for profile and settings; fix: check object existence before copying in SaveUpload; fix: adjust profile DTO mapping function for proper pointer handling
This commit is contained in:
@@ -50,11 +50,10 @@ type profileServiceImpl struct {
|
||||
s3 S3Service
|
||||
}
|
||||
|
||||
func NewProfileService(_log *zap.Logger, _dbctx database.DbContext, _redis *redis.Client, _minio *minio.Client) ProfileService {
|
||||
return &profileServiceImpl{log: _log, dbctx: _dbctx, redis: _redis, minio: _minio}
|
||||
func NewProfileService(_log *zap.Logger, _dbctx database.DbContext, _redis *redis.Client, _minio *minio.Client, _s3 S3Service) ProfileService {
|
||||
return &profileServiceImpl{log: _log, dbctx: _dbctx, redis: _redis, minio: _minio, s3: _s3}
|
||||
}
|
||||
|
||||
// XXX: untested
|
||||
func (p *profileServiceImpl) GetMyProfile(cinfo dto.ClientInfo) (*dto.ProfileDto, error) {
|
||||
db := database.NewDbHelper(p.dbctx);
|
||||
|
||||
@@ -65,13 +64,12 @@ func (p *profileServiceImpl) GetMyProfile(cinfo dto.ClientInfo) (*dto.ProfileDto
|
||||
return nil, errs.ErrServerError
|
||||
}
|
||||
|
||||
var profileDto dto.ProfileDto
|
||||
profileDto := &dto.ProfileDto{}
|
||||
mapspecial.MapProfileDto(profile, profileDto)
|
||||
|
||||
return &profileDto, nil
|
||||
return profileDto, nil
|
||||
}
|
||||
|
||||
// XXX: untested
|
||||
// TODO: Profile privacy settings checks
|
||||
func (p *profileServiceImpl) GetProfileByUsername(cinfo dto.ClientInfo, username string) (*dto.ProfileDto, error) {
|
||||
helper, db, err := database.NewDbHelperTransaction(p.dbctx); if err != nil {
|
||||
@@ -94,13 +92,12 @@ func (p *profileServiceImpl) GetProfileByUsername(cinfo dto.ClientInfo, username
|
||||
return nil, errs.ErrServerError
|
||||
}
|
||||
|
||||
var profileDto dto.ProfileDto
|
||||
profileDto := &dto.ProfileDto{}
|
||||
mapspecial.MapProfileDto(profile, profileDto)
|
||||
|
||||
return &profileDto, nil
|
||||
return profileDto, nil
|
||||
}
|
||||
|
||||
// XXX: unstested
|
||||
func (p *profileServiceImpl) GetProfileSettings(cinfo dto.ClientInfo) (*dto.ProfileSettingsDto, error) {
|
||||
db := database.NewDbHelper(p.dbctx);
|
||||
|
||||
@@ -111,10 +108,10 @@ func (p *profileServiceImpl) GetProfileSettings(cinfo dto.ClientInfo) (*dto.Prof
|
||||
return nil, errs.ErrServerError
|
||||
}
|
||||
|
||||
var profileSettingsDto dto.ProfileSettingsDto
|
||||
profileSettingsDto := &dto.ProfileSettingsDto{}
|
||||
automapper.Map(profileSettings, profileSettingsDto)
|
||||
|
||||
return &profileSettingsDto, nil
|
||||
return profileSettingsDto, nil
|
||||
}
|
||||
|
||||
// XXX: no validation for timestamps' allowed ranges
|
||||
@@ -133,10 +130,15 @@ func (p *profileServiceImpl) UpdateProfile(cinfo dto.ClientInfo, newProfile dto.
|
||||
}
|
||||
|
||||
var avatarUrl *string
|
||||
if newProfile.AvatarUploadID != nil {
|
||||
key, err := p.s3.SaveUpload(*newProfile.AvatarUploadID, "avatars"); if err != nil {
|
||||
if newProfile.AvatarUploadID != "" {
|
||||
key, err := p.s3.SaveUpload(newProfile.AvatarUploadID, "avatars"); if err != nil {
|
||||
|
||||
if errors.Is(err, errs.ErrFileNotFound) {
|
||||
return false, err
|
||||
}
|
||||
|
||||
p.log.Error("Failed to save avatar",
|
||||
zap.String("upload_id", *newProfile.AvatarUploadID),
|
||||
zap.String("upload_id", newProfile.AvatarUploadID),
|
||||
zap.Error(err))
|
||||
return false, errs.ErrServerError
|
||||
}
|
||||
@@ -151,6 +153,8 @@ func (p *profileServiceImpl) UpdateProfile(cinfo dto.ClientInfo, newProfile dto.
|
||||
Bio: newProfile.Bio,
|
||||
Birthday: birthdayTimestamp,
|
||||
AvatarUrl: avatarUrl,
|
||||
Color: newProfile.Color,
|
||||
ColorGrad: newProfile.ColorGrad,
|
||||
}); if err != nil {
|
||||
p.log.Error(
|
||||
"Failed to update user profile",
|
||||
@@ -169,7 +173,6 @@ func (p *profileServiceImpl) UpdateProfile(cinfo dto.ClientInfo, newProfile dto.
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// XXX: untested
|
||||
func (p *profileServiceImpl) UpdateProfileSettings(cinfo dto.ClientInfo, newProfileSettings dto.ProfileSettingsDto) (bool, error) {
|
||||
helper, db, err := database.NewDbHelperTransaction(p.dbctx); if err != nil {
|
||||
p.log.Error(
|
||||
|
||||
Reference in New Issue
Block a user