From d245b29f82a03f1aff966a2fb2100a5703d82f32 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Wed, 25 Jan 2017 09:32:42 -0500 Subject: More app code migration (#5170) * Migrate admin functions into app package * More user function refactoring * Move post functions into app package --- app/saml.go | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 app/saml.go (limited to 'app/saml.go') 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 +} -- cgit v1.2.3-1-g7c22