@tapni/auth 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +31 -31
- package/dist/Apps-CQsB1lEC.js +109 -0
- package/dist/Billing-BIO99qab.js +113 -0
- package/dist/CustomApp-CQ4RAku_.js +83 -0
- package/dist/General-iSouoUZJ.js +502 -0
- package/dist/QR-CCoQyrlf.js +41 -0
- package/dist/TapniAuth.es.js +1 -1
- package/dist/TapniAuth.umd.js +15 -15
- package/dist/auth.css +1 -0
- package/dist/{install-BzPu9V_c.js → install-DBU_KAIr.js} +3410 -3218
- package/dist/web-BhPSya4n.js +124 -0
- package/package.json +20 -20
- package/src/App.vue +18 -3
- package/src/components/{SSO.vue → DELETE_SSO.vue} +1 -7
- package/src/main.js +0 -1
- package/src/mixins/microsoft.mixin.js +0 -3
- package/src/mixins/okta.mixin.js +1 -1
- package/src/mixins/saml.mixin.js +1 -1
- package/src/routes.js +6 -0
- package/src/services/AuthService.js +6 -0
- package/src/services/MetadataService.js +10 -0
- package/src/store/locales/en.js +2 -1
- package/src/views/Apps.vue +17 -30
- package/src/views/Billing.vue +108 -0
- package/src/views/CustomApp.vue +14 -39
- package/src/views/General.vue +5 -4
- package/src/views/Login.vue +194 -159
- package/src/views/Security.vue +1 -1
- package/dist/Account-zep_QUuI.js +0 -153
- package/dist/Apps-B9XB7Z7q.js +0 -112
- package/dist/CustomApp-BzUsyycz.js +0 -112
- package/dist/General-DkcdjPYQ.js +0 -477
- package/dist/QR-PW6cAG5j.js +0 -41
- package/dist/style.css +0 -1
- package/dist/web-XbruGdlD.js +0 -121
- /package/src/components/{SSOPick.vue → DELETE_SSOPick.vue} +0 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { WebPlugin as z } from "@capacitor/core";
|
|
2
|
+
var _ = { exports: {} };
|
|
3
|
+
/*!
|
|
4
|
+
* $script.js JS loader & dependency manager
|
|
5
|
+
* https://github.com/ded/script.js
|
|
6
|
+
* (c) Dustin Diaz 2014 | License MIT
|
|
7
|
+
*/
|
|
8
|
+
var N;
|
|
9
|
+
function L() {
|
|
10
|
+
return N || (N = 1, function(x) {
|
|
11
|
+
(function(i, p) {
|
|
12
|
+
x.exports ? x.exports = p() : this[i] = p();
|
|
13
|
+
})("$script", function() {
|
|
14
|
+
var i = document, p = i.getElementsByTagName("head")[0], I = !1, m = "push", S = "readyState", A = "onreadystatechange", s = {}, o = {}, d = {}, f, v;
|
|
15
|
+
function h(e, t) {
|
|
16
|
+
for (var n = 0, u = e.length; n < u; ++n) if (!t(e[n])) return I;
|
|
17
|
+
return 1;
|
|
18
|
+
}
|
|
19
|
+
function g(e, t) {
|
|
20
|
+
h(e, function(n) {
|
|
21
|
+
return t(n), 1;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function l(e, t, n) {
|
|
25
|
+
e = e[m] ? e : [e];
|
|
26
|
+
var u = t && t.call, r = u ? t : n, U = u ? e.join("") : t, W = e.length;
|
|
27
|
+
function w(c) {
|
|
28
|
+
return c.call ? c() : s[c];
|
|
29
|
+
}
|
|
30
|
+
function y() {
|
|
31
|
+
if (!--W) {
|
|
32
|
+
s[U] = 1, r && r();
|
|
33
|
+
for (var c in o)
|
|
34
|
+
h(c.split("|"), w) && !g(o[c], w) && (o[c] = []);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return setTimeout(function() {
|
|
38
|
+
g(e, function c(a, j) {
|
|
39
|
+
if (a === null) return y();
|
|
40
|
+
if (!j && !/^https?:\/\//.test(a) && f && (a = a.indexOf(".js") === -1 ? f + a + ".js" : f + a), d[a])
|
|
41
|
+
return d[a] == 2 ? y() : setTimeout(function() {
|
|
42
|
+
c(a, !0);
|
|
43
|
+
}, 0);
|
|
44
|
+
d[a] = 1, b(a, y);
|
|
45
|
+
});
|
|
46
|
+
}, 0), l;
|
|
47
|
+
}
|
|
48
|
+
function b(e, t) {
|
|
49
|
+
var n = i.createElement("script"), u;
|
|
50
|
+
n.onload = n.onerror = n[A] = function() {
|
|
51
|
+
n[S] && !/^c|loade/.test(n[S]) || u || (n.onload = n[A] = null, u = 1, d[e] = 2, t());
|
|
52
|
+
}, n.async = 1, n.src = v ? e + (e.indexOf("?") === -1 ? "?" : "&") + v : e, p.insertBefore(n, p.lastChild);
|
|
53
|
+
}
|
|
54
|
+
return l.get = b, l.order = function(e, t, n) {
|
|
55
|
+
(function u(r) {
|
|
56
|
+
r = e.shift(), e.length ? l(r, u) : l(r, t, n);
|
|
57
|
+
})();
|
|
58
|
+
}, l.path = function(e) {
|
|
59
|
+
f = e;
|
|
60
|
+
}, l.urlArgs = function(e) {
|
|
61
|
+
v = e;
|
|
62
|
+
}, l.ready = function(e, t, n) {
|
|
63
|
+
e = e[m] ? e : [e];
|
|
64
|
+
var u = [];
|
|
65
|
+
return !g(e, function(r) {
|
|
66
|
+
s[r] || u[m](r);
|
|
67
|
+
}) && h(e, function(r) {
|
|
68
|
+
return s[r];
|
|
69
|
+
}) ? t() : function(r) {
|
|
70
|
+
o[r] = o[r] || [], o[r][m](t), n && n(u);
|
|
71
|
+
}(e.join("|")), l;
|
|
72
|
+
}, l.done = function(e) {
|
|
73
|
+
l([null], e);
|
|
74
|
+
}, l;
|
|
75
|
+
});
|
|
76
|
+
}(_)), _.exports;
|
|
77
|
+
}
|
|
78
|
+
var P = L();
|
|
79
|
+
class k extends z {
|
|
80
|
+
constructor() {
|
|
81
|
+
super({
|
|
82
|
+
name: "SignInWithApple",
|
|
83
|
+
platforms: ["web"]
|
|
84
|
+
}), this.appleScriptUrl = "https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js", this.isAppleScriptLoaded = !1;
|
|
85
|
+
}
|
|
86
|
+
async authorize(i) {
|
|
87
|
+
return new Promise((p, I) => {
|
|
88
|
+
i ? this.loadSignInWithAppleJS().then((m) => {
|
|
89
|
+
var S, A, s;
|
|
90
|
+
this.isAppleScriptLoaded = m, this.isAppleScriptLoaded ? (AppleID.auth.init({
|
|
91
|
+
clientId: i.clientId,
|
|
92
|
+
redirectURI: i.redirectURI,
|
|
93
|
+
scope: (S = i.scopes) !== null && S !== void 0 ? S : void 0,
|
|
94
|
+
state: (A = i.state) !== null && A !== void 0 ? A : void 0,
|
|
95
|
+
nonce: (s = i.nonce) !== null && s !== void 0 ? s : void 0,
|
|
96
|
+
usePopup: !0
|
|
97
|
+
}), AppleID.auth.signIn().then((o) => {
|
|
98
|
+
var d, f, v, h, g;
|
|
99
|
+
const l = {
|
|
100
|
+
response: {
|
|
101
|
+
user: null,
|
|
102
|
+
email: (d = o.user) === null || d === void 0 ? void 0 : d.email,
|
|
103
|
+
givenName: (v = (f = o.user) === null || f === void 0 ? void 0 : f.name) === null || v === void 0 ? void 0 : v.firstName,
|
|
104
|
+
familyName: (g = (h = o.user) === null || h === void 0 ? void 0 : h.name) === null || g === void 0 ? void 0 : g.lastName,
|
|
105
|
+
identityToken: o.authorization.id_token,
|
|
106
|
+
authorizationCode: o.authorization.code
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
p(l);
|
|
110
|
+
}).catch((o) => {
|
|
111
|
+
I(o);
|
|
112
|
+
})) : I("Unable to load Sign in with Apple JS framework.");
|
|
113
|
+
}) : I("No options were provided.");
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
loadSignInWithAppleJS() {
|
|
117
|
+
return new Promise((i) => {
|
|
118
|
+
this.isAppleScriptLoaded ? i(!0) : typeof window !== void 0 ? P.get(this.appleScriptUrl, () => i(!0)) : i(!1);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export {
|
|
123
|
+
k as SignInWithAppleWeb
|
|
124
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tapni/auth",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/TapniAuth.umd.js",
|
|
6
6
|
"module": "./dist/TapniAuth.es.js",
|
|
@@ -22,36 +22,36 @@
|
|
|
22
22
|
"build-lib": "vite build --config=vite-lib.config.js"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@braintree/sanitize-url": "^7.
|
|
26
|
-
"@capacitor-community/apple-sign-in": "^
|
|
27
|
-
"@capacitor-community/facebook-login": "^
|
|
28
|
-
"@capacitor/app": "^
|
|
29
|
-
"@capacitor/browser": "^
|
|
30
|
-
"@capacitor/core": "^
|
|
31
|
-
"@capacitor/device": "^
|
|
32
|
-
"@capacitor/preferences": "^
|
|
25
|
+
"@braintree/sanitize-url": "^7.1.0",
|
|
26
|
+
"@capacitor-community/apple-sign-in": "^6.0.0",
|
|
27
|
+
"@capacitor-community/facebook-login": "^6.0.0",
|
|
28
|
+
"@capacitor/app": "^6.0.2",
|
|
29
|
+
"@capacitor/browser": "^6.0.4",
|
|
30
|
+
"@capacitor/core": "^6.2.0",
|
|
31
|
+
"@capacitor/device": "^6.0.2",
|
|
32
|
+
"@capacitor/preferences": "^6.0.3",
|
|
33
33
|
"@codetrix-studio/capacitor-google-auth": "^3.3.6",
|
|
34
34
|
"@otplib/preset-browser": "^12.0.1",
|
|
35
|
-
"@recognizebv/capacitor-plugin-msauth": "^3.
|
|
35
|
+
"@recognizebv/capacitor-plugin-msauth": "^3.6.1",
|
|
36
36
|
"@tapni/capacitor-reactive-localstorage-vue3": "^0.0.17",
|
|
37
37
|
"@tapni/styles": "^0.0.8",
|
|
38
38
|
"await-to-js": "^3.0.0",
|
|
39
|
-
"axios": "^1.
|
|
39
|
+
"axios": "^1.7.8",
|
|
40
40
|
"buffer": "^6.0.3",
|
|
41
41
|
"jwt-decode": "^4.0.0",
|
|
42
|
-
"qr-code-styling": "^1.
|
|
43
|
-
"vue": "^3.
|
|
44
|
-
"vue-cookies": "^1.8.
|
|
45
|
-
"vue-router": "^4.
|
|
46
|
-
"vue3-select-component": "^0.
|
|
47
|
-
"vuex": "^4.0
|
|
42
|
+
"qr-code-styling": "^1.8.4",
|
|
43
|
+
"vue": "^3.5.13",
|
|
44
|
+
"vue-cookies": "^1.8.4",
|
|
45
|
+
"vue-router": "^4.5.0",
|
|
46
|
+
"vue3-select-component": "^0.7.0",
|
|
47
|
+
"vuex": "^4.1.0",
|
|
48
48
|
"vuex-router-sync": "v6.0.0-rc.1"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@rollup/plugin-inject": "^5.0.5",
|
|
52
|
-
"@vitejs/plugin-vue": "^
|
|
53
|
-
"office-addin-dev-certs": "^1.13.
|
|
54
|
-
"vite": "^
|
|
52
|
+
"@vitejs/plugin-vue": "^5.2.1",
|
|
53
|
+
"office-addin-dev-certs": "^1.13.5",
|
|
54
|
+
"vite": "^6.0.1",
|
|
55
55
|
"vite-plugin-node-polyfills": "^0.22.0"
|
|
56
56
|
}
|
|
57
57
|
}
|
package/src/App.vue
CHANGED
|
@@ -21,6 +21,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
21
21
|
|
|
22
22
|
<AuthWelcome v-if="initialized && renderView === 'AuthWelcome'" />
|
|
23
23
|
<AuthLogin v-else-if="initialized && renderView === 'AuthLogin'" :isModal="isModal" />
|
|
24
|
+
<AuthAccount v-else-if="initialized && renderView === 'AuthAccount'" :isModal="isModal" />
|
|
24
25
|
<AuthRegister v-else-if="initialized && renderView === 'AuthRegister'" :isModal="isModal" />
|
|
25
26
|
<AuthVerify v-else-if="initialized && renderView === 'AuthVerify'" :isModal="isModal" />
|
|
26
27
|
<AuthSecurity v-else-if="initialized && renderView === 'AuthSecurity'" :isModal="isModal" :payload="payload" />
|
|
@@ -70,16 +71,18 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
70
71
|
</template>
|
|
71
72
|
|
|
72
73
|
<script>
|
|
74
|
+
import "../public/index.css";
|
|
73
75
|
import AuthWelcome from "@/views/Welcome.vue";
|
|
74
76
|
import AuthLogin from "@/views/Login.vue";
|
|
77
|
+
import AuthAccount from "@/views/Account.vue";
|
|
75
78
|
import AuthRegister from "@/views/Register.vue";
|
|
76
79
|
import AuthVerify from "@/views/Verify.vue";
|
|
77
80
|
import AuthSecurity from "@/views/Security.vue";
|
|
78
81
|
import AuthReset from "@/views/Reset.vue";
|
|
79
82
|
import AuthCallback from "@/views/Callback.vue";
|
|
80
83
|
import ModalOverlay from "@/components/DELETE_ModalOverlay.vue";
|
|
81
|
-
import SSO from "@/components/
|
|
82
|
-
import SSOPick from "@/components/
|
|
84
|
+
import SSO from "@/components/DELETE_SSO.vue";
|
|
85
|
+
import SSOPick from "@/components/DELETE_SSOPick.vue";
|
|
83
86
|
import {EventBus} from "./store/event-bus.js";
|
|
84
87
|
import AuthMixin from "@/mixins/auth.mixin.js";
|
|
85
88
|
import Language from "@/components/DELETE_Language.vue";
|
|
@@ -99,7 +102,7 @@ export default {
|
|
|
99
102
|
components: {
|
|
100
103
|
Language,
|
|
101
104
|
SSOPick,
|
|
102
|
-
SSO, ModalOverlay, AuthCallback, AuthReset, AuthVerify, AuthSecurity, AuthRegister, AuthLogin, AuthWelcome
|
|
105
|
+
SSO, ModalOverlay, AuthCallback, AuthReset, AuthVerify, AuthSecurity, AuthRegister, AuthLogin, AuthAccount, AuthWelcome
|
|
103
106
|
},
|
|
104
107
|
props: {
|
|
105
108
|
viewProp: {
|
|
@@ -319,4 +322,16 @@ html * {
|
|
|
319
322
|
height: 40px;
|
|
320
323
|
margin-top: 10px;
|
|
321
324
|
}
|
|
325
|
+
|
|
326
|
+
@media (max-width: 768px) {
|
|
327
|
+
#bodyId {
|
|
328
|
+
margin-top: 0;
|
|
329
|
+
border-radius: 0;
|
|
330
|
+
height: 100%!important;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.header-logo {
|
|
334
|
+
margin-top: 15px;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
322
337
|
</style>
|
|
@@ -91,18 +91,12 @@ export default {
|
|
|
91
91
|
if (!ssoTypes.length) {
|
|
92
92
|
this.forceClose();
|
|
93
93
|
return this.errorSnack(this.ssoLang[this.appLanguage].no_sso_logins);
|
|
94
|
-
} else
|
|
94
|
+
} else {
|
|
95
95
|
if (ssoTypes[0] === "azure")
|
|
96
96
|
this.microsoftLogin("sso", response.sso.azure.sso);
|
|
97
97
|
if (ssoTypes[0] === "okta") this.oktaLogin(response.sso.okta.sso);
|
|
98
98
|
if (ssoTypes[0] === "saml")
|
|
99
99
|
this.samlLogin(response.sso.saml.sso.loginUrl);
|
|
100
|
-
} else {
|
|
101
|
-
this.forceClose();
|
|
102
|
-
EventBus.$emit("toggleSSOPickModal", {
|
|
103
|
-
sso: response.sso,
|
|
104
|
-
email: this.email,
|
|
105
|
-
});
|
|
106
100
|
}
|
|
107
101
|
}
|
|
108
102
|
},
|
package/src/main.js
CHANGED
package/src/mixins/okta.mixin.js
CHANGED
|
@@ -121,7 +121,7 @@ export default {
|
|
|
121
121
|
window.opener.postMessage(postMessageData, location.origin);
|
|
122
122
|
window.close()
|
|
123
123
|
} else {
|
|
124
|
-
if(this.isNative && this.
|
|
124
|
+
if(this.isNative && this.isiOS) await Browser.close();
|
|
125
125
|
EventBus.$emit('ssoEvent', {name: 'setLoading', data: true})
|
|
126
126
|
if (code && clientID && domain) await this.exchangeCode({code, clientID, domain, platform});
|
|
127
127
|
localStorage.removeItem("pkce_code_verifier");
|
package/src/mixins/saml.mixin.js
CHANGED
|
@@ -68,7 +68,7 @@ export default {
|
|
|
68
68
|
window.opener.postMessage(postMessageData, location.origin);
|
|
69
69
|
window.close()
|
|
70
70
|
} else {
|
|
71
|
-
if(this.isNative && this.
|
|
71
|
+
if(this.isNative && this.isiOS) await Browser.close();
|
|
72
72
|
EventBus.$emit('ssoEvent', {name: 'setLoading', data: true})
|
|
73
73
|
if (this.$route.query.code) code = this.$route.query.code
|
|
74
74
|
|
package/src/routes.js
CHANGED
|
@@ -8,6 +8,7 @@ const Callback = () => import("./views/Callback.vue");
|
|
|
8
8
|
const QR = () => import("./views/QR.vue");
|
|
9
9
|
const Security = () => import("./views/Security.vue");
|
|
10
10
|
const Apps = () => import("./views/Apps.vue");
|
|
11
|
+
const Billing = () => import("./views/Billing.vue");
|
|
11
12
|
const CustomApp = () => import("./views/CustomApp.vue");
|
|
12
13
|
const General = () => import("./views/General.vue");
|
|
13
14
|
|
|
@@ -38,6 +39,11 @@ export default [
|
|
|
38
39
|
name: "AuthSecurity",
|
|
39
40
|
component: Security,
|
|
40
41
|
},
|
|
42
|
+
{
|
|
43
|
+
path: "/billing",
|
|
44
|
+
name: "AuthBilling",
|
|
45
|
+
component: Billing,
|
|
46
|
+
},
|
|
41
47
|
{
|
|
42
48
|
path: "/apps",
|
|
43
49
|
name: "AuthApps",
|
|
@@ -78,4 +78,10 @@ export default {
|
|
|
78
78
|
getAccountSettings() {
|
|
79
79
|
return api().get("/users/settings");
|
|
80
80
|
},
|
|
81
|
+
async getRecordById(data) {
|
|
82
|
+
return api().post("/objects/record/" + data.id, data);
|
|
83
|
+
},
|
|
84
|
+
async getRecords(data) {
|
|
85
|
+
return api().post("/objects/records", data);
|
|
86
|
+
}
|
|
81
87
|
}
|
package/src/store/locales/en.js
CHANGED
|
@@ -400,7 +400,7 @@ export default {
|
|
|
400
400
|
update_p3: "Please update the app to the newest version",
|
|
401
401
|
company_domain: "Your company domain",
|
|
402
402
|
search_company_domain: "Search your company domain",
|
|
403
|
-
enter_company_email: "Enter
|
|
403
|
+
enter_company_email: "Enter business email",
|
|
404
404
|
company_not_found: "Company not found",
|
|
405
405
|
ik_company_domain: "I know the company domain",
|
|
406
406
|
idk_company_domain: "I don't know the company domain",
|
|
@@ -523,6 +523,7 @@ export default {
|
|
|
523
523
|
general: "General",
|
|
524
524
|
general_p: "Manage your personal details & other preferences",
|
|
525
525
|
billing: "Billing",
|
|
526
|
+
billing_p: "Manage your subscriptions & payment profiles",
|
|
526
527
|
apps: "Apps",
|
|
527
528
|
apps_p: "View your active apps & explore other",
|
|
528
529
|
apps_my: "My apps",
|
package/src/views/Apps.vue
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
</a>
|
|
8
8
|
<div class="subheaderContainer full-top">
|
|
9
9
|
<!-- Back Button -->
|
|
10
|
-
<router-link to="/account" class="button gray-button pointer left-button">
|
|
10
|
+
<router-link v-if="!isModal" to="/account" class="button gray-button pointer left-button">
|
|
11
11
|
<img
|
|
12
12
|
:src="getIcon('arrow-gray-right.svg')"
|
|
13
13
|
height="20"
|
|
@@ -29,41 +29,17 @@
|
|
|
29
29
|
<div class="full-top">
|
|
30
30
|
<h3 v-if="false" class="full-top bold small-bottom">{{ssoLang[appLanguage].apps_my}}</h3>
|
|
31
31
|
|
|
32
|
-
<
|
|
32
|
+
<a v-for="app in apps" :key="app.id" :href="app.t_apps_url" target="_blank" class="settingRow half-bottom">
|
|
33
33
|
<div class="firstRow">
|
|
34
34
|
<img
|
|
35
|
-
:src="getIcon(
|
|
35
|
+
:src="getIcon(app.t_apps_icon)"
|
|
36
36
|
class="withBackground"
|
|
37
37
|
/>
|
|
38
|
-
<h4>
|
|
38
|
+
<h4>{{ app.t_apps_name }}</h4>
|
|
39
39
|
|
|
40
40
|
<img :src="getIcon('arrow-gray-right.svg')" />
|
|
41
41
|
</div>
|
|
42
|
-
</
|
|
43
|
-
|
|
44
|
-
<router-link to="/apps/mailsign" class="settingRow half-top">
|
|
45
|
-
<div class="firstRow">
|
|
46
|
-
<img
|
|
47
|
-
:src="getIcon('app-logo-mailsign.svg')"
|
|
48
|
-
class="withBackground"
|
|
49
|
-
/>
|
|
50
|
-
<h4>MailSign</h4>
|
|
51
|
-
|
|
52
|
-
<img :src="getIcon('arrow-gray-right.svg')" />
|
|
53
|
-
</div>
|
|
54
|
-
</router-link>
|
|
55
|
-
|
|
56
|
-
<router-link v-if="false" to="/apps/qrcodetoolkit" class="settingRow half-top">
|
|
57
|
-
<div class="firstRow">
|
|
58
|
-
<img
|
|
59
|
-
:src="getIcon('app-logo-qrcodetoolkit.svg')"
|
|
60
|
-
class="withBackground"
|
|
61
|
-
/>
|
|
62
|
-
<h4>QRCode Toolkit</h4>
|
|
63
|
-
|
|
64
|
-
<img :src="getIcon('arrow-gray-right.svg')" />
|
|
65
|
-
</div>
|
|
66
|
-
</router-link>
|
|
42
|
+
</a>
|
|
67
43
|
</div>
|
|
68
44
|
</div>
|
|
69
45
|
</div>
|
|
@@ -73,9 +49,10 @@
|
|
|
73
49
|
<script>
|
|
74
50
|
import AuthMixin from "../mixins/auth.mixin";
|
|
75
51
|
import {EventBus} from "@/store/event-bus.js";
|
|
52
|
+
import MetadataService from "@/services/MetadataService.js";
|
|
76
53
|
|
|
77
54
|
export default {
|
|
78
|
-
name: "
|
|
55
|
+
name: "AuthApps",
|
|
79
56
|
mixins: [AuthMixin],
|
|
80
57
|
props: {
|
|
81
58
|
payload: {
|
|
@@ -86,10 +63,20 @@ export default {
|
|
|
86
63
|
data () {
|
|
87
64
|
return {
|
|
88
65
|
loading: false,
|
|
66
|
+
apps: []
|
|
89
67
|
}
|
|
90
68
|
},
|
|
91
69
|
async mounted() {
|
|
92
70
|
if (!this.isLoggedIn) this.$router.push('/login');
|
|
71
|
+
|
|
72
|
+
const response = await MetadataService.getRecords({
|
|
73
|
+
objectId: '6dc545ea-2e2f-4720-b4fe-c5ebdd8af063',
|
|
74
|
+
query: {
|
|
75
|
+
fields: ['t_apps_name', 't_apps_icon', 't_apps_url'],
|
|
76
|
+
relations: []
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
this.apps = response.data.records;
|
|
93
80
|
},
|
|
94
81
|
methods: {
|
|
95
82
|
close () {
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="page-login content-boxed content-boxed-padding">
|
|
3
|
+
<a v-if="isModal" @click="close" class="color-black pull-right pointer" style="margin-top: 0px; position: absolute; right: -20px; text-align: right;">
|
|
4
|
+
<i class="font-17 color-black">
|
|
5
|
+
<img src="https://cdn.tapni.co/icons/down-arrow.png" class="responsive-image" style="width: 35%;"/>
|
|
6
|
+
</i>
|
|
7
|
+
</a>
|
|
8
|
+
<div class="subheaderContainer full-top">
|
|
9
|
+
<!-- Back Button -->
|
|
10
|
+
<router-link v-if="!isModal" to="/account" class="button gray-button pointer left-button">
|
|
11
|
+
<img
|
|
12
|
+
:src="getIcon('arrow-gray-right.svg')"
|
|
13
|
+
height="20"
|
|
14
|
+
width="20"
|
|
15
|
+
class="btn-icon"
|
|
16
|
+
style="rotate: 180deg;"
|
|
17
|
+
/>
|
|
18
|
+
</router-link>
|
|
19
|
+
|
|
20
|
+
<!-- Centered Text -->
|
|
21
|
+
<h2 class="center-text" style="flex-grow: 1; text-align: center; margin: 0; font-weight: 600;">
|
|
22
|
+
{{ssoLang[appLanguage].billing }}
|
|
23
|
+
</h2>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="container left-text">
|
|
27
|
+
<p class="center-text">{{ssoLang[appLanguage].billing_p }}</p>
|
|
28
|
+
|
|
29
|
+
<div class="full-top">
|
|
30
|
+
<h3 v-if="false" class="full-top bold small-bottom">{{ssoLang[appLanguage].apps_my}}</h3>
|
|
31
|
+
|
|
32
|
+
{{account.billing}}
|
|
33
|
+
|
|
34
|
+
<div v-for="sub in subscriptions" :key="sub.id" class="settingRow half-bottom">
|
|
35
|
+
<div class="firstRow">
|
|
36
|
+
<img
|
|
37
|
+
:src="getIcon(app.t_apps_icon)"
|
|
38
|
+
class="withBackground"
|
|
39
|
+
/>
|
|
40
|
+
<h4>{{ sub.t_subscriptions_name }}</h4>
|
|
41
|
+
|
|
42
|
+
<img :src="getIcon('arrow-gray-right.svg')" />
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
</template>
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
<script>
|
|
52
|
+
import AuthMixin from "../mixins/auth.mixin";
|
|
53
|
+
import {EventBus} from "@/store/event-bus.js";
|
|
54
|
+
import AuthService from "@/services/AuthService.js";
|
|
55
|
+
|
|
56
|
+
export default {
|
|
57
|
+
name: "AuthBilling",
|
|
58
|
+
mixins: [AuthMixin],
|
|
59
|
+
props: {
|
|
60
|
+
payload: {
|
|
61
|
+
type: Object,
|
|
62
|
+
default: {}
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
data () {
|
|
66
|
+
return {
|
|
67
|
+
loading: false,
|
|
68
|
+
subscriptions: []
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
async mounted() {
|
|
72
|
+
if (!this.isLoggedIn) this.$router.push('/login');
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
const response = await AuthService.getRecords({
|
|
76
|
+
objectId: '6dc545ea-2e2f-4720-b4fe-c5ebdd8af066',
|
|
77
|
+
query: {
|
|
78
|
+
where: {
|
|
79
|
+
account: this.account.id,
|
|
80
|
+
},
|
|
81
|
+
fields: ['t_subscriptions_name', 't_subscriptions_desc', 't_subscriptions_type', 't_subscriptions_active', 't_subscriptions_app'],
|
|
82
|
+
relations: {
|
|
83
|
+
t_subscriptions_app: {
|
|
84
|
+
fields: [
|
|
85
|
+
"t_apps_name",
|
|
86
|
+
"t_apps_icon",
|
|
87
|
+
"t_apps_url"
|
|
88
|
+
],
|
|
89
|
+
relations: {},
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
})
|
|
94
|
+
this.subscriptions = response.data.records;
|
|
95
|
+
},
|
|
96
|
+
methods: {
|
|
97
|
+
close () {
|
|
98
|
+
EventBus.$emit('ssoEvent', {name: 'toggleAuthModal', data: true})
|
|
99
|
+
},
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
</script>
|
|
103
|
+
|
|
104
|
+
<style scoped>
|
|
105
|
+
.withBackground {
|
|
106
|
+
height: 50px;
|
|
107
|
+
}
|
|
108
|
+
</style>
|
package/src/views/CustomApp.vue
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
</a>
|
|
8
8
|
<div class="subheaderContainer full-top">
|
|
9
9
|
<!-- Back Button -->
|
|
10
|
-
<router-link to="/
|
|
10
|
+
<router-link v-if="!isModal" to="/apps" class="button gray-button pointer left-button">
|
|
11
11
|
<img
|
|
12
12
|
:src="getIcon('arrow-gray-right.svg')"
|
|
13
13
|
height="20"
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
<!-- Centered Text -->
|
|
21
21
|
<h2 class="center-text" style="flex-grow: 1; text-align: center; margin: 0; font-weight: 600;">
|
|
22
|
-
{{
|
|
22
|
+
{{ app.t_apps_name }}
|
|
23
23
|
</h2>
|
|
24
24
|
</div>
|
|
25
25
|
|
|
@@ -27,43 +27,7 @@
|
|
|
27
27
|
<p class="center-text">{{ssoLang[appLanguage].apps_p }}</p>
|
|
28
28
|
|
|
29
29
|
<div class="full-top">
|
|
30
|
-
<h3 v-if="false" class="full-top bold small-bottom">{{ssoLang[appLanguage].apps_my}}</h3>
|
|
31
30
|
|
|
32
|
-
<router-link to="/apps/tapni" class="settingRow">
|
|
33
|
-
<div class="firstRow">
|
|
34
|
-
<img
|
|
35
|
-
:src="getIcon('tapni-logo-small-black.png')"
|
|
36
|
-
class="withBackground"
|
|
37
|
-
/>
|
|
38
|
-
<h4>Tapni</h4>
|
|
39
|
-
|
|
40
|
-
<img :src="getIcon('arrow-gray-right.svg')" />
|
|
41
|
-
</div>
|
|
42
|
-
</router-link>
|
|
43
|
-
|
|
44
|
-
<router-link to="/apps/mailsign" class="settingRow half-top">
|
|
45
|
-
<div class="firstRow">
|
|
46
|
-
<img
|
|
47
|
-
:src="getIcon('app-logo-mailsign.svg')"
|
|
48
|
-
class="withBackground"
|
|
49
|
-
/>
|
|
50
|
-
<h4>MailSign</h4>
|
|
51
|
-
|
|
52
|
-
<img :src="getIcon('arrow-gray-right.svg')" />
|
|
53
|
-
</div>
|
|
54
|
-
</router-link>
|
|
55
|
-
|
|
56
|
-
<router-link v-if="false" to="/apps/qrcodetoolkit" class="settingRow half-top">
|
|
57
|
-
<div class="firstRow">
|
|
58
|
-
<img
|
|
59
|
-
:src="getIcon('app-logo-qrcodetoolkit.svg')"
|
|
60
|
-
class="withBackground"
|
|
61
|
-
/>
|
|
62
|
-
<h4>QRCode Toolkit</h4>
|
|
63
|
-
|
|
64
|
-
<img :src="getIcon('arrow-gray-right.svg')" />
|
|
65
|
-
</div>
|
|
66
|
-
</router-link>
|
|
67
31
|
</div>
|
|
68
32
|
</div>
|
|
69
33
|
</div>
|
|
@@ -73,9 +37,10 @@
|
|
|
73
37
|
<script>
|
|
74
38
|
import AuthMixin from "../mixins/auth.mixin";
|
|
75
39
|
import {EventBus} from "@/store/event-bus.js";
|
|
40
|
+
import AuthService from "@/services/AuthService.js";
|
|
76
41
|
|
|
77
42
|
export default {
|
|
78
|
-
name: "
|
|
43
|
+
name: "AuthCustomApp",
|
|
79
44
|
mixins: [AuthMixin],
|
|
80
45
|
props: {
|
|
81
46
|
payload: {
|
|
@@ -86,10 +51,20 @@ export default {
|
|
|
86
51
|
data () {
|
|
87
52
|
return {
|
|
88
53
|
loading: false,
|
|
54
|
+
app: {}
|
|
89
55
|
}
|
|
90
56
|
},
|
|
91
57
|
async mounted() {
|
|
92
58
|
if (!this.isLoggedIn) this.$router.push('/login');
|
|
59
|
+
|
|
60
|
+
const response = await AuthService.getRecordById({
|
|
61
|
+
id: this.$route.params.app,
|
|
62
|
+
query: {
|
|
63
|
+
fields: ['t_apps_name', 't_apps_icon', 't_apps_url'],
|
|
64
|
+
relations: []
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
this.app = response.data.record;
|
|
93
68
|
},
|
|
94
69
|
methods: {
|
|
95
70
|
close () {
|