12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import { AccountsLockout } from 'meteor/wekan-accounts-lockout';
- import { ReactiveCache } from '/imports/reactiveCache';
- import LockoutSettings from '/models/lockoutSettings';
- Meteor.methods({
- reloadAccountsLockout() {
- // Check if user has admin rights
- const userId = Meteor.userId();
- if (!userId) {
- throw new Meteor.Error('error-invalid-user', 'Invalid user');
- }
- const user = ReactiveCache.getUser(userId);
- if (!user || !user.isAdmin) {
- throw new Meteor.Error('error-not-allowed', 'Not allowed');
- }
- try {
- // Get configurations from database
- const knownUsersConfig = {
- failuresBeforeLockout: LockoutSettings.findOne('known-failuresBeforeLockout')?.value || 3,
- lockoutPeriod: LockoutSettings.findOne('known-lockoutPeriod')?.value || 60,
- failureWindow: LockoutSettings.findOne('known-failureWindow')?.value || 15
- };
- const unknownUsersConfig = {
- failuresBeforeLockout: LockoutSettings.findOne('unknown-failuresBeforeLockout')?.value || 3,
- lockoutPeriod: LockoutSettings.findOne('unknown-lockoutPeriod')?.value || 60,
- failureWindow: LockoutSettings.findOne('unknown-failureWindow')?.value || 15
- };
- // Initialize the AccountsLockout with configuration
- const accountsLockout = new AccountsLockout({
- knownUsers: knownUsersConfig,
- unknownUsers: unknownUsersConfig,
- });
- // Start the accounts lockout mechanism
- accountsLockout.startup();
- return true;
- } catch (error) {
- console.error('Failed to reload accounts lockout:', error);
- throw new Meteor.Error('error-reloading-settings', 'Error reloading settings');
- }
- }
- });
|