| 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');    }  }});
 |