initial commit

This commit is contained in:
Brian McGonagill 2022-08-04 19:50:18 -05:00
parent b7c7d8b449
commit 750811a81f
52 changed files with 25204 additions and 92 deletions

View file

@ -0,0 +1,50 @@
<template name="systemAdminLogin">
{{#if $not currentUser}}
<div id="signInForm">
<div class="container">
<h3>System Administrator Login</h3>
<p>It is very important to the safety of all children that you do not share your login credentials with anyone.</p>
<div class="card">
<div class="card-content">
<form class="login">
<div class="row">
<div class="col s12 input-field">
<input type="email" name="email" id="email" class="email {{#if $eq misEmail true}}red lighten-3{{/if}}" />
<label for="email">Email *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field">
<input type="password" name="password" id="password" class="password {{#if $eq misPass true}}red lighten-3{{/if}}" />
<label for="password">Password *</label>
</div>
</div>
{{#if $eq areFilled false}}
<div class="row">
<div class="col s12 red lighten-3 white-text">
<span>You must fill all fields to login.</span>
</div>
</div>
{{/if}}
{{#if $eq loginError true}}
<div class="row">
<div class="col s12 red lighten-2 white-text">
<span>Username or Password is incorrect. Please check your credentials and try again, or click 'Register' to create a new account.</span>
</div>
</div>
{{/if}}
<div class="row">
<div class="col s12">
<a id="logmein" class="waves-effect waves-light btn logmein green darken-1">Log In</a>
</div>
</div>
</form>
</div>
<div class="card-action">
<a href="#" id="sysAdminReg">Register</a>
</div>
</div>
</div>
</div>
{{/if}}
</template>

View file

@ -0,0 +1,45 @@
Template.systemAdminLogin.onCreated(function() {
});
Template.systemAdminLogin.onRendered(function() {
});
Template.systemAdminLogin.helpers({
areFilled: function() {
return Session.get("filledFields");
},
loginError: function() {
return Session.get("loginError");
},
});
Template.systemAdminLogin.events({
'click #logmein' (event) {
event.preventDefault();
console.log("clicked login");
let email = $("#email").val();
let pass = $("#password").val();
if (email == null || email == "" || pass == "" || pass == null) {
Session.set("filledFields", false);
return;
} else {
return Meteor.loginWithPassword(email, pass, function(err, result) {
if (err) {
console.log("Error logging in: " + err);
Session.set("loginError", true);
} else {
console.log("login result: " + result);
Session.set("loginError", false);
FlowRouter.go('/dashboard');
}
});
}
},
'click #sysAdminReg' (event) {
event.preventDefault();
FlowRouter.go('/systemAdminReg');
},
});

View file

@ -0,0 +1,69 @@
<template name="systemAdminReg">
{{#if Template.subscriptionsReady}}
{{#if $not currentUser}}
<div id="registrationForm">
<div class="container">
{{#if $eq allowedReg true}}
<h3>System Admin Registration</h3>
<p>If you want to disable System Admin registration after creating this account, please check the box.</p>
<div class="row">
<div class="col s12">
<div class="card">
<div class="card-content">
<form class="register">
<div class="row">
<div class="col s12 input-field">
<input type="text" name="name" class="name {{#if $eq misName true}}red lighten-3{{/if}}" id="name" />
<label for="name">Your Full Name *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field">
<input type="email" name="email" id="email" class="email {{#if $eq misEmail true}}red lighten-3{{/if}}" />
<label for="email">Email *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field">
<input type="password" name="password" id="password" class="password {{#if $eq misPass true}}red lighten-3{{/if}}" />
<label for="password">Password *</label>
</div>
</div>
<div class="row">
<div class="col s12 input-field {{#if $eq canReg false}}orange lighten-1{{/if}}">
<input type="password" name="passwordConfirm" id="passwordConfirm" class="passwordConfirm" />
<label for="passwordConfirm">Confirm Password *</label>
</div>
</div>
<div class="row">
<div class="col s12">
<p>
<label>
<input type="checkbox" id="disableSysAdminReg" />
<span>Disable Future System Admin Registrations</span>
</label>
</p>
</div>
</div>
<div class="row">
<div class="col s12">
<a id="registerMe" class="waves-effect waves-light btn registerMe {{#if $eq canReg false}}grey{{else}}green darken-1{{/if}}">Register</a>
</div>
</div>
</form>
</div>
<div class="card-action">
<a href="#" id="sysAdminLogin">Sign In</a>
</div>
</div>
</div>
</div>
{{else}}
<h3>System Admin Registration Disabled</h3>
<p>A system administrator has disabled the ability to register as a new system admin. If you believe this was done mistakenly, contact a current system administrator for this system, and have them change this setting.</p>
{{/if}}
</div>
</div>
{{/if}}
{{/if}}
</template>

View file

@ -0,0 +1,118 @@
import { SysConfig } from '../../../imports/api/systemConfig.js';
Template.systemAdminReg.onCreated(function() {
this.subscribe("SystemConfig");
});
Template.systemAdminReg.onRendered(function() {
Session.set("canReg", false);
Session.set("misName", false);
Session.set("misEmail", false);
Session.set("misPass", false);
});
Template.systemAdminReg.helpers({
allowedReg: function() {
let sysconf = SysConfig.findOne();
if (typeof sysconf == 'undefined') {
return true;
} else {
console.dir(sysconf);
return sysconf.canReg;
}
},
canReg: function() {
return Session.get("canReg");
},
misName: function() {
return Session.get("misName");
},
misEmail: function() {
return Session.get("misEmail");
},
misPass: function() {
return Session.get("misPass");
},
});
Template.systemAdminReg.events({
'click #registerMe' (event) {
event.preventDefault();
if (Session.get("canReg") == false) {
// console.log("reg disabled.");
} else {
let name = $("#name").val();
let email = $("#email").val();
let pass = $("#password").val();
let disableSysAdReg = $("#disableSysAdminReg").prop("checked");
if (name == "" || name == null) {
Session.set("misName", true);
}
if (email == "" || email == null) {
Session.set("misEmail", true);
}
if (pass == "" || pass == null) {
Session.set("misPass", true);
}
if (name == "" || name == null || email == "" || email == null || pass == "" || pass == null) {
console.log("required info missing.");
} else {
// call meteor method to create user and add them to sys admin role.
Accounts.createUser({
email: email,
password: pass,
profile: {
fullname: name,
}
});
let userId = Meteor.userId();
console.log("User ID: " + userId);
Meteor.call("addToRole", "systemadmin", function(err, result) {
if (err) {
console.log(" ERROR: ROLES - Error adding user to role: " + err);
} else {
Meteor.call('add.noSysAdminReg', function(err, result) {
if (err) {
console.log(" ERROR: SYS ADMIN REG - Error setting system admin registration as disabled: " + err);
} else {
FlowRouter.go('/dashboard');
}
});
}
});
}
}
},
'keyup #passwordConfirm' (event) {
let pwd = $("#password").val();
let pwdconf = $("#passwordConfirm").val();
if (pwd == pwdconf) {
// console.log("passwords match");
Session.set("canReg", true);
} else {
// console.log("passwords don't match");
Session.set("canReg", false);
}
},
'change #email' (event) {
let email = $("#email").val();
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
let isEmail = regex.test(email);
if (isEmail == false) {
Session.set("misEmail", true);
} else {
Session.set("misEmail", false);
}
},
'click #sysAdminLogin' (event) {
event.preventDefault();
FlowRouter.go('/sysAdminlogin');
},
});