function clearAuthState() { auth.user = ''; // Login name auth.name = ''; // Full name auth.mail = ''; // Full mail address auth.type = ''; // type of login (domain specific) auth.roles = {}; // Role authorizations e.g. {user: true} auth.gender = ''; // Gender (e.g. Frau) auth.abos = []; // Followed tags auth.bookmarks = []; // Ids of bookmarks } clearAuthState(); function fillAuthState(state) { // Shallow copy if (auth === undefined) { auth = state; } for (e in auth) { auth[e] = state[e]; } } function updateUserInDB() { $.ajax({ url: "api/usr", data: { _id: auth.user, name: auth.name, mail: auth.mail, type: auth.type, gender: auth.gender, roles: JSON.stringify(auth.roles), abos: JSON.stringify(auth.abos), bookmarks: JSON.stringify(auth.bookmarks), }, method: "PUT" }).done(successful_save).fail(failed_save); function successful_save(res) { console.info("User-save: Successful."); console.info(res); } function failed_save(err) { console.info("User-save: Failed."); console.error(err); } } // Login component: Login panel (if not logged in) or Logout element (if logged in) Vue.component('login-panel', { template: ` `, data: function () { return { user: '', pwd: '', error: false, }; }, // TODO: Check if enough for session cookie re-login; checkbox // Doesn't work beforeMount: function() { this.checkData(); }, methods: { closeLoginPanel: function() { this.$emit('close-login-panel'); }, showLoginPanel: function() { this.$emit('show-login-panel'); }, pwd_changed: function(evt) { // Only required for PasswordInsert Apps etc. who send only(!) change events this.pwd = e.target.value; // Alternative call the input event //e.target.dispatchEvent(new Event('input')); }, login: function() { clearAuthState(); $.ajax({ url: "api/login", data: { user: this.user, pwd: this.pwd }, method: "POST" }).done(successful_login).fail(failed_login); function successful_login(resData) { fillAuthState(resData); // updateUserInDB(); auth.abos = []; auth.bookmarks = []; console.info("Correct credentials"); this.closeLoginPanel; //console.log(resData); router.push('/home'); } function failed_login(err) { console.info("Wrong credentials"); this.error=true; this.showLoginPanel; console.log("error: " + err.responseText); console.log(err); } }, checkData: function() { clearAuthState(); $.ajax({ url: "api/login", data: undefined, method: "POST" }).done(successful_login).fail(failed_login); function successful_login(res) { console.info("Re-Auth: Correct credentials"); this.closeLoginPanel; vueForceRender('key'); //console.log(res); router.push('/home') } function failed_login(err) { console.info("Re-Auth: Wrong credentials"); this.error=true; this.showLoginPanel; console.log(err); } }, }, });