129 lines
3.5 KiB
JavaScript
129 lines
3.5 KiB
JavaScript
import { Meteor } from 'meteor/meteor';
|
|
import { Template } from 'meteor/templating';
|
|
import { ReactiveVar } from 'meteor/reactive-var';
|
|
import { Session } from 'meteor/session';
|
|
import { Router } from 'meteor/iron:router';
|
|
import { moment } from 'meteor/momentjs:moment';
|
|
import { OHIF } from 'meteor/ohif:core';
|
|
|
|
// Display the last login modal as default
|
|
Session.setDefault('displayLastLoginModal', true);
|
|
|
|
Template.userAccountMenu.helpers({
|
|
name: function() {
|
|
const nameSplit = Meteor.user().profile.fullName.split(' ');
|
|
const lastName = nameSplit[nameSplit.length - 1];
|
|
nameSplit[nameSplit.length - 1] = lastName.substr(0, 1) + '.';
|
|
return nameSplit.join(' ');
|
|
},
|
|
|
|
currentUser: function() {
|
|
const verifyEmail = Meteor.settings && Meteor.settings.public && Meteor.settings.public.verifyEmail || false;
|
|
|
|
if (!Meteor.user() || !Meteor.userId()) {
|
|
return;
|
|
}
|
|
|
|
if (!verifyEmail) {
|
|
return true;
|
|
}
|
|
|
|
if (!Meteor.user().emails) {
|
|
return true;
|
|
}
|
|
|
|
return !!Meteor.user().emails[0].verified;
|
|
}
|
|
});
|
|
|
|
Template.userAccountMenu.events({
|
|
'click #serverInformation'() {
|
|
OHIF.ui.showDialog('serverInformationModal');
|
|
},
|
|
|
|
'click #themeSelector'() {
|
|
OHIF.ui.showDialog('themeSelectorModal');
|
|
},
|
|
|
|
'click #logoutButton'() {
|
|
Meteor.logout(function() {
|
|
Router.go('/entrySignIn');
|
|
});
|
|
}
|
|
});
|
|
|
|
Template.userAccountMenu.onCreated(function userAccountMenuCreated() {
|
|
const instance = Template.instance();
|
|
|
|
// Create reactive last login date
|
|
instance.lastLoginDate = new ReactiveVar();
|
|
|
|
// We need oldUser to remove Reviewers if the user logged out
|
|
let oldUser;
|
|
|
|
// Get last login date
|
|
Meteor.call('getPriorLoginDate', function(error, lastLoginDate) {
|
|
if (error) {
|
|
OHIF.log.error(error);
|
|
return;
|
|
}
|
|
|
|
// Format the last login date
|
|
const formattedLastLoginDate = moment(lastLoginDate).format('MMMM Do YYYY, HH:mm:ss A');
|
|
|
|
instance.lastLoginDate.set(formattedLastLoginDate);
|
|
|
|
});
|
|
|
|
instance.autorun(function() {
|
|
const lastLoginDate = instance.lastLoginDate.get();
|
|
if (!lastLoginDate) {
|
|
return;
|
|
}
|
|
|
|
// Hook login/logout
|
|
const user = Meteor.user();
|
|
if (!user) {
|
|
// Display last login modal for the next login
|
|
Session.setPersistent('displayLastLoginModal', true);
|
|
|
|
if (oldUser) {
|
|
// Log Signout
|
|
// TODO: eventType for logout is not defined
|
|
// HipaaLogger.logEvent({
|
|
// eventType: 'logout',
|
|
// userId: oldUser._id,
|
|
// userName: oldUser.profile.fullName
|
|
// });
|
|
|
|
// Remove the user by oldUserId from Reviewers
|
|
Meteor.call('removeUserFromReviewers', oldUser._id);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
// Set oldUser
|
|
oldUser = user;
|
|
|
|
// Trigger last login date popup
|
|
if (!Session.get('displayLastLoginModal')) {
|
|
return;
|
|
}
|
|
|
|
// Display the modal and hide it after 5 seconds
|
|
OHIF.ui.showDialog('lastLoginModal', {
|
|
lastLoginDate,
|
|
timeout: 5000
|
|
}).then(() => Session.setPersistent('displayLastLoginModal', false));
|
|
|
|
// Log signin
|
|
HipaaLogger.logEvent({
|
|
eventType: 'init',
|
|
userId: user._id,
|
|
userName: user.profile.fullName
|
|
});
|
|
|
|
});
|
|
});
|