diff --git a/plugin/api/email/common/auth.go b/plugin/api/email/common/auth.go new file mode 100644 index 00000000..a5c78301 --- /dev/null +++ b/plugin/api/email/common/auth.go @@ -0,0 +1,36 @@ +/* Copyright © INFINI Ltd. All rights reserved. + * Web: https://infinilabs.com + * Email: hello#infini.ltd */ + +package common + +import ( + "infini.sh/console/model" + "infini.sh/framework/core/credential" + "infini.sh/framework/core/elastic" + "infini.sh/framework/core/orm" +) + +func GetBasicAuth(srv *model.EmailServer) (basicAuth elastic.BasicAuth, err error) { + if srv.Auth != nil && srv.Auth.Username != "" { + basicAuth = *srv.Auth + return + } + if srv.CredentialID != "" { + cred := credential.Credential{} + cred.ID = srv.CredentialID + _, err = orm.Get(&cred) + if err != nil { + return + } + var dv interface{} + dv, err = cred.Decode() + if err != nil { + return + } + if auth, ok := dv.(elastic.BasicAuth); ok { + basicAuth = auth + } + } + return +}