]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blobdiff - api/api.go
Mails.
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git] / api / api.go
index 42b9923986484cf896d7587efaa8c508f2bde379..e01181123633e4a7112dd1124375ae8d7f5e680b 100644 (file)
@@ -8,8 +8,18 @@ import (
 )
 
 var CONFIG Config
+var MAIL_CONFIG MailConfig
+
+type MailConfig struct {
+       IsEnabled   bool
+       SmtpAddress string `toml:"smtp_address"`
+       AddressFrom string `toml:"address_from"`
+       Login       string `toml:"login"`
+       Password    string `toml:"password"`
+}
 
 type Config struct {
+       Domain              string `toml:"domain"`
        JwtSecret           string `toml:"jwt_secret"`
        PasswordResetSecret string `toml:"password_reset_secret"`
        FreeSMSUser         string `toml:"free_sms_user"`
@@ -23,6 +33,15 @@ func SetConfig(config Config) {
        PASSWORD_RESET_SECRET = []byte(config.PasswordResetSecret)
 }
 
+func SetMailConfig(config MailConfig) {
+       MAIL_CONFIG = config
+
+       if config.Login != "" && config.AddressFrom != "" && config.Password != "" && config.SmtpAddress != "" {
+               MAIL_CONFIG.IsEnabled = true
+               ConfigureMailTemplateEngine()
+       }
+}
+
 type Error struct {
        Code        ErrorCode
        UserMessage string
@@ -45,7 +64,22 @@ func (e Error) Error() string {
        return ""
 }
 
+func ErrorIs(err error, code ErrorCode) bool {
+       if err == nil {
+               return false
+       }
+
+       if apiError, ok := err.(*Error); !ok {
+               return false
+       } else {
+               return apiError.Code == code
+       }
+}
+
 func NewInternalError(err error) *Error {
+       if apiError, ok := err.(*Error); ok {
+               return apiError
+       }
        return &Error{InternalError, "internal error", err}
 }