Initial Commit für das Grundgerüst der Anwendung, bestehend aus der Dev-Container Konfiguration, der Docker und docker-Compose Definitionen sowie der Verzeichnisse App_Server für die Backend-Programme sowie Client für die browserseitigen GUI-Komponenten
This commit is contained in:
1 parent
10549934ea
commit
1ba78992a6
63 files changed
+5410
No files matched your search
@@ -0,0 +1,117 @@
|
||||
import m from "mithril";
|
||||
import {ModalView, iModalView} from "../widgets/Modal"
|
||||
import {iUser} from "./models/users"
|
||||
import {showServerError} from "./authmessages"
|
||||
import { headerdata } from "../header";
|
||||
|
||||
export interface iLoginscreen {
|
||||
setnextpage: string
|
||||
}
|
||||
export const loginscreen: m.ClosureComponent<iLoginscreen> = (vnode) => {
|
||||
let form: HTMLFormElement = null;
|
||||
function reset (e) {
|
||||
form.reset()
|
||||
}
|
||||
function checklogin(e: Event) {
|
||||
e.preventDefault()
|
||||
let formdata: FormData = new FormData(e.target as HTMLFormElement)
|
||||
let user: iUser
|
||||
m.request ({
|
||||
method: "POST", // Hier muss POST verwendet werden, weil GET keinen Body hat und Parameter nur im URL transportieren kann
|
||||
url: "/auth/checklogin",
|
||||
body: Object.fromEntries(formdata.entries())
|
||||
})
|
||||
.then((result) => {
|
||||
user = result as iUser;
|
||||
// global.appglobals.currentuser = user.username
|
||||
// global.appglobals.currentuserid = user.userid
|
||||
sessionStorage.setItem("CurrentUser", user.username);
|
||||
headerdata.username = user.username
|
||||
headerdata.userid = user.userid
|
||||
// nur wenn es sich um einen SysAdmin handelt, wird der SessionStorage gesetzt. Will man später wissen,
|
||||
// ob der aktuelle User ein SysAdmin ist, braucht man nur auf das Vorhandensein des Schlüssels abzufragen
|
||||
// und nicht auch noch auf den Inhalt
|
||||
if (user.isSysAdmin) {
|
||||
sessionStorage.setItem("CurrentUserIsSysAdmin", "1");
|
||||
}
|
||||
})
|
||||
.then(() => {m.route.set(vnode.attrs.setnextpage)})
|
||||
.catch((error) => {
|
||||
sessionStorage.removeItem("CurrentUser");
|
||||
sessionStorage.removeItem("CurrentUserIsSysAdmin");
|
||||
showServerError(error)
|
||||
})
|
||||
|
||||
}
|
||||
return {
|
||||
oninit: (vnode) => {
|
||||
m.request({
|
||||
method: "GET",
|
||||
url: "/auth/logout"
|
||||
})
|
||||
.then (() => {
|
||||
sessionStorage.removeItem("CurrentUser");
|
||||
sessionStorage.removeItem("CurrentUserIsSysAdmin");
|
||||
// global.appglobals.currentuser = "nicht angemeldet"
|
||||
// global.appglobals.currentuserid = ""
|
||||
})
|
||||
},
|
||||
view: (vnode) => {
|
||||
return m(ModalView, {title: "Login", width: '33%'} as iModalView,
|
||||
m("form.w3-padding-16", {oncreate: (vnode) => {form = vnode.dom as HTMLFormElement}, onsubmit: checklogin},
|
||||
m("label", "Benutzer-ID"),
|
||||
m("input.w3-input.w3-border", {name: 'userid', type: 'text'}),
|
||||
m("label", "Kennwort"),
|
||||
m("input.w3-input.w3-border", {name: 'password', type: 'password'}),
|
||||
m("div.w3-bar.w3-padding-16",
|
||||
[
|
||||
m("button.w3-button.w3-theme.w3-right", {style: {'margin-left': '4px'}, type: "submit"}, "Login"),
|
||||
m("button.w3-button.w3-theme.w3-right", {onclick: reset, type: "button"}, "Zurücksetzen"),
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const changepasswordscreen: m.ClosureComponent = () => {
|
||||
let form: HTMLFormElement = null;
|
||||
function reset (e) {
|
||||
form.reset()
|
||||
}
|
||||
function changepassword(e) {
|
||||
e.preventDefault()
|
||||
let formdata: FormData = new FormData(e.target as HTMLFormElement)
|
||||
m.request ({
|
||||
method: "POST", // Hier muss POST verwendet werden, weil GET keinen Body hat und Parameter nur im URL transportieren kann
|
||||
url: "/auth/changepassword",
|
||||
body: Object.fromEntries(formdata.entries())
|
||||
})
|
||||
.then(() => {m.route.set("/login")})
|
||||
.catch((e) => {showServerError(e)})
|
||||
}
|
||||
return {
|
||||
view: (vnode) => {
|
||||
return m(ModalView, {title: "Kennwort ändern", width: '33%'} as iModalView,
|
||||
m("form.w3-padding-16", {oncreate: (vnode) => {form = vnode.dom as HTMLFormElement}, onsubmit: changepassword},
|
||||
m("label", "Benutzer-ID"),
|
||||
m("input.w3-input.w3-border", {name: 'Userid', type: 'text', value: headerdata.userid, readonly: true}),
|
||||
m("label", "Altes Kennwort"),
|
||||
m("input.w3-input.w3-border", {name: 'OldPassword', type: 'password'}),
|
||||
m("label", "Neues Kennwort"),
|
||||
m("input.w3-input.w3-border", {name: 'NewPassword1', type: 'password'}),
|
||||
m("label", "Neues Kennwort"),
|
||||
m("input.w3-input.w3-border", {name: 'NewPassword2', type: 'password'}),
|
||||
m("div.w3-bar.w3-padding-16",
|
||||
[
|
||||
m("button.w3-button.w3-theme.w3-right", {style: {'margin-left': '4px'}, type: "submit"}, "Kennwort ändern"),
|
||||
m("button.w3-button.w3-theme.w3-right", {style: {'margin-left': '4px'}, onclick: reset, type: "button"}, "Zurücksetzen"),
|
||||
m("button.w3-button.w3-theme.w3-right", {onclick: () => {history.back()}, type: "button"}, "Abbrechen"),
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user