forked from NotNet/gluestick
75 lines
1.9 KiB
HTML
75 lines
1.9 KiB
HTML
{{ template "header.html" . }}
|
|
|
|
<script>
|
|
let source = null;
|
|
function sendToGluestick(msg) {
|
|
source.postMessage(msg, {
|
|
targetOrigin: '{{ print (extra "gluestick_url") }}'
|
|
});
|
|
}
|
|
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
window.addEventListener(
|
|
"message",
|
|
(e) => {
|
|
if (e.origin != '{{ print (extra "gluestick_url") }}') return;
|
|
|
|
switch (e.data.type) {
|
|
case "appResult":
|
|
submitApproval(e.data.success);
|
|
break;
|
|
}
|
|
},
|
|
false
|
|
);
|
|
|
|
const iframe = document.querySelector("iframe");
|
|
iframe.addEventListener("load", () => {
|
|
source = iframe.contentWindow;
|
|
sendToGluestick({ type: "hello" });
|
|
sendToGluestick({
|
|
type: "appInfo",
|
|
client: "{{ .Client }}",
|
|
scopes:
|
|
{{ if .Scopes }}
|
|
[
|
|
{{ range $scope := .Scopes }}
|
|
"{{ $scope }}",
|
|
{{ end }}
|
|
]
|
|
{{ else }}
|
|
null
|
|
{{ end }}
|
|
});
|
|
});
|
|
});
|
|
|
|
async function submitApproval(doesApprove) {
|
|
const params = new URLSearchParams();
|
|
params.append("req", "{{ .AuthReqID }}");
|
|
params.append("approval", doesApprove ? "approve" : "rejected");
|
|
|
|
// cursed shit to work about cors
|
|
const form = document.createElement("form");
|
|
form.method = "POST";
|
|
|
|
const hiddenReq = document.createElement("input");
|
|
hiddenReq.type = "hidden";
|
|
hiddenReq.name = "req";
|
|
hiddenReq.value = "{{ .AuthReqID }}";
|
|
form.appendChild(hiddenReq);
|
|
|
|
const hiddenApproval = document.createElement("input");
|
|
hiddenApproval.type = "hidden";
|
|
hiddenApproval.name = "approval";
|
|
hiddenApproval.value = doesApprove ? "approve" : "rejected";
|
|
form.appendChild(hiddenApproval);
|
|
|
|
document.body.appendChild(form);
|
|
form.submit();
|
|
}
|
|
</script>
|
|
<iframe src='{{ print (extra "gluestick_url") "/dex/approval" }}'></iframe>
|
|
|
|
{{ template "footer.html" . }}
|