From afc471116edff8d8ea39e94d9f992d7ea16b1c3c Mon Sep 17 00:00:00 2001 From: hunterlong Date: Thu, 2 Jul 2020 11:41:46 -0700 Subject: [PATCH] authentication, UI fixes, --- cmd/cli.go | 19 ++++-- frontend/src/API.js | 3 +- frontend/src/assets/scss/base.scss | 2 +- frontend/src/forms/Notifier.vue | 78 ++++++++++++++------- frontend/src/forms/OAuth.vue | 105 +++++++++++++++-------------- frontend/src/forms/User.vue | 16 ++++- frontend/src/pages/Settings.vue | 13 +--- handlers/authentication.go | 9 +++ handlers/jwt.go | 2 + notifiers/command.go | 37 +++++----- notifiers/statping_emailer.go | 2 +- types/configs/connection.go | 1 + types/core/database.go | 18 +---- types/core/samples.go | 1 + types/users/database.go | 6 ++ types/users/hooks.go | 1 - types/users/sample.go | 2 + types/users/scopes.go | 43 ++++++++++++ types/users/struct.go | 2 +- 19 files changed, 224 insertions(+), 136 deletions(-) create mode 100644 types/users/scopes.go diff --git a/cmd/cli.go b/cmd/cli.go index 083b55dd..672fb676 100644 --- a/cmd/cli.go +++ b/cmd/cli.go @@ -398,14 +398,19 @@ func ExportSettings() ([]byte, error) { if err != nil { return nil, err } + var srvs []services.Service + for _, s := range services.AllInOrder() { + s.Failures = nil + srvs = append(srvs, s) + } data := ExportData{ - Core: c, - //Notifiers: notifications.All(), - Checkins: checkins.All(), - Users: users.All(), - Services: services.AllInOrder(), - Groups: groups.All(), - Messages: messages.All(), + Core: c, + Notifiers: core.App.Notifications, + Checkins: checkins.All(), + Users: users.All(), + Services: srvs, + Groups: groups.All(), + Messages: messages.All(), } export, err := json.Marshal(data) return export, err diff --git a/frontend/src/API.js b/frontend/src/API.js index aed0c464..dbadbf04 100644 --- a/frontend/src/API.js +++ b/frontend/src/API.js @@ -3,13 +3,14 @@ import axios from 'axios' import * as Sentry from "@sentry/browser"; import * as Integrations from "@sentry/integrations"; const qs = require('querystring'); +axios.defaults.withCredentials = true const tokenKey = "statping_auth"; const errorReporter = "https://bed4d75404924cb3a799e370733a1b64@sentry.statping.com/3" class Api { constructor() { - axios.defaults.withCredentials = true + } async oauth() { diff --git a/frontend/src/assets/scss/base.scss b/frontend/src/assets/scss/base.scss index 09755f3e..9b09b68d 100644 --- a/frontend/src/assets/scss/base.scss +++ b/frontend/src/assets/scss/base.scss @@ -689,7 +689,7 @@ HTML,BODY { transition: 0.2s all; } .switch-rd-gr input:checked + label::before { - background-color: #cd141b; + background-color: #29b10c !important; } .switch input:checked + label::before { background-color: #08d; diff --git a/frontend/src/forms/Notifier.vue b/frontend/src/forms/Notifier.vue index 53cd3fef..2702132e 100644 --- a/frontend/src/forms/Notifier.vue +++ b/frontend/src/forms/Notifier.vue @@ -4,17 +4,41 @@
{{notifier.title}} - - + +

-

- - Scan this QR Code on the Statping Mobile App for quick setup +
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ + Scan this QR Code on the Statping Mobile App for quick setup +
@@ -47,10 +71,11 @@
+ {{notifier.title}} Outgoing Request {{notifier.data_type}}
-
+
@@ -97,16 +122,16 @@
-
-
-
+
-
+
@@ -157,6 +182,7 @@ export default { request: null, success: false, saved: false, + expanded: false, success_data: null, failure_data: null, form: {}, @@ -226,14 +252,16 @@ export default { this.form.enabled = this.notifier.enabled this.form.limits = parseInt(this.notifier.limits) this.form.method = this.notifier.method - this.notifier.form.forEach((f) => { - let field = f.field.toLowerCase() - let val = this.notifier[field] - if (this.isNumeric(val)) { - val = parseInt(val) + if (this.notifier.form) { + this.notifier.form.forEach((f) => { + let field = f.field.toLowerCase() + let val = this.notifier[field] + if (this.isNumeric(val)) { + val = parseInt(val) + } + this.form[field] = val + }); } - this.form[field] = val - }); this.form.success_data = this.success_data this.form.failure_data = this.failure_data await Api.notifier_save(this.form) @@ -246,14 +274,16 @@ export default { this.success = false this.loadingTest = true this.form.method = this.notifier.method + if (this.notifier.form) { this.notifier.form.forEach((f) => { - let field = f.field.toLowerCase() - let val = this.notifier[field] - if (this.isNumeric(val)) { - val = parseInt(val) - } - this.form[field] = val + let field = f.field.toLowerCase() + let val = this.notifier[field] + if (this.isNumeric(val)) { + val = parseInt(val) + } + this.form[field] = val }); + } let req = { notifier: this.form, method: method, diff --git a/frontend/src/forms/OAuth.vue b/frontend/src/forms/OAuth.vue index 8c3e3904..1b99eec4 100644 --- a/frontend/src/forms/OAuth.vue +++ b/frontend/src/forms/OAuth.vue @@ -1,23 +1,27 @@