summaryrefslogtreecommitdiffstats
path: root/app/saml.go
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-01-25 09:32:42 -0500
committerHarrison Healey <harrisonmhealey@gmail.com>2017-01-25 09:32:42 -0500
commitd245b29f82a03f1aff966a2fb2100a5703d82f32 (patch)
treecf204039af74fa2579e0291e9e595f08411b0a7a /app/saml.go
parent8ed665cb76c0763e83a2949c4bdd70153baf72f7 (diff)
downloadchat-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.go67
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
+}