github.com/infraboard/keyauth@v0.8.1/apps/system/impl/system.go (about) 1 package impl 2 3 import ( 4 "context" 5 6 "github.com/infraboard/mcube/exception" 7 "go.mongodb.org/mongo-driver/bson" 8 "go.mongodb.org/mongo-driver/mongo" 9 10 "github.com/infraboard/keyauth/apps/system" 11 "github.com/infraboard/keyauth/apps/system/notify/mail" 12 "github.com/infraboard/keyauth/apps/system/notify/sms" 13 "github.com/infraboard/keyauth/apps/verifycode" 14 ) 15 16 func (s *service) UpdateEmail(mailConf *mail.Config) error { 17 if err := mailConf.Validate(); err != nil { 18 return exception.NewBadRequest("validate mail config error, %s", err) 19 } 20 21 return s.updateEmail(mailConf) 22 } 23 24 func (s *service) UpdateSMS(smsConf *sms.Config) error { 25 if err := smsConf.Validate(); err != nil { 26 return exception.NewBadRequest("validate mail config error, %s", err) 27 } 28 29 return s.updateSMS(smsConf) 30 } 31 32 func (s *service) UpdateVerifyCode(vfconf *verifycode.Config) error { 33 if err := vfconf.Validate(); err != nil { 34 return exception.NewBadRequest("validate verify code config error, %s", err) 35 } 36 37 conf, err := s.GetConfig() 38 if err != nil { 39 return err 40 } 41 42 // 校验配置的通知方式是否已经配置 43 switch vfconf.NotifyType { 44 case verifycode.NotifyType_MAIL: 45 if err := conf.Email.Validate(); err != nil { 46 s.log.Infof("email setting validate error, %s", err) 47 return exception.NewBadRequest("系统邮件未配置, 或配置有误") 48 } 49 // 校验配置的通知方式是否已经配置 50 case verifycode.NotifyType_SMS: 51 if err := conf.SMS.Validate(); err != nil { 52 s.log.Infof("sms setting validate error, %s", err) 53 return exception.NewBadRequest("系统短信未配置, 或配置有误") 54 } 55 } 56 57 return s.updateVerifyCode(vfconf) 58 } 59 60 func (s *service) GetConfig() (*system.Config, error) { 61 conf := system.NewDefaultConfig() 62 if err := s.col.FindOne(context.TODO(), bson.M{"_id": conf.Version}).Decode(conf); err != nil { 63 if err == mongo.ErrNoDocuments { 64 return nil, exception.NewNotFound("version: %s system config not found, please init first", conf.Version) 65 } 66 67 return nil, exception.NewInternalServerError("find system config %s error, %s", conf.Version, err) 68 } 69 70 return conf, nil 71 } 72 73 func (s *service) InitConfig(conf *system.Config) error { 74 return s.save(conf) 75 }