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  }