diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-01-25 09:32:42 -0500 |
---|---|---|
committer | Harrison Healey <harrisonmhealey@gmail.com> | 2017-01-25 09:32:42 -0500 |
commit | d245b29f82a03f1aff966a2fb2100a5703d82f32 (patch) | |
tree | cf204039af74fa2579e0291e9e595f08411b0a7a /app/saml.go | |
parent | 8ed665cb76c0763e83a2949c4bdd70153baf72f7 (diff) | |
download | chat-d245b29f82a03f1aff966a2fb2100a5703d82f32.tar.gz chat-d245b29f82a03f1aff966a2fb2100a5703d82f32.tar.bz2 chat-d245b29f82a03f1aff966a2fb2100a5703d82f32.zip |
More app code migration (#5170)
* Migrate admin functions into app package
* More user function refactoring
* Move post functions into app package
Diffstat (limited to 'app/saml.go')
-rw-r--r-- | app/saml.go | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/app/saml.go b/app/saml.go new file mode 100644 index 000000000..cc39d4540 --- /dev/null +++ b/app/saml.go @@ -0,0 +1,67 @@ +// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package app + +import ( + "io" + "mime/multipart" + "net/http" + "os" + + "github.com/mattermost/platform/einterfaces" + "github.com/mattermost/platform/model" + "github.com/mattermost/platform/utils" +) + +func GetSamlMetadata() (string, *model.AppError) { + samlInterface := einterfaces.GetSamlInterface() + + if samlInterface == nil { + err := model.NewLocAppError("GetSamlMetadata", "api.admin.saml.not_available.app_error", nil, "") + err.StatusCode = http.StatusNotImplemented + return "", err + } + + if result, err := samlInterface.GetMetadata(); err != nil { + return "", model.NewLocAppError("GetSamlMetadata", "api.admin.saml.metadata.app_error", nil, "err="+err.Message) + } else { + return result, nil + } +} + +func AddSamlCertificate(fileData *multipart.FileHeader) *model.AppError { + file, err := fileData.Open() + defer file.Close() + if err != nil { + return model.NewLocAppError("AddSamlCertificate", "api.admin.add_certificate.open.app_error", nil, err.Error()) + } + + out, err := os.Create(utils.FindDir("config") + fileData.Filename) + if err != nil { + return model.NewLocAppError("AddSamlCertificate", "api.admin.add_certificate.saving.app_error", nil, err.Error()) + } + defer out.Close() + + io.Copy(out, file) + return nil +} + +func RemoveSamlCertificate(filename string) *model.AppError { + if err := os.Remove(utils.FindConfigFile(filename)); err != nil { + return model.NewLocAppError("removeCertificate", "api.admin.remove_certificate.delete.app_error", + map[string]interface{}{"Filename": filename}, err.Error()) + } + + return nil +} + +func GetSamlCertificateStatus() map[string]interface{} { + status := make(map[string]interface{}) + + status["IdpCertificateFile"] = utils.FileExistsInConfigFolder(*utils.Cfg.SamlSettings.IdpCertificateFile) + status["PrivateKeyFile"] = utils.FileExistsInConfigFolder(*utils.Cfg.SamlSettings.PrivateKeyFile) + status["PublicCertificateFile"] = utils.FileExistsInConfigFolder(*utils.Cfg.SamlSettings.PublicCertificateFile) + + return status +} |