lockoutSettings.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { AccountsLockout } from 'meteor/wekan-accounts-lockout';
  2. import { ReactiveCache } from '/imports/reactiveCache';
  3. import LockoutSettings from '/models/lockoutSettings';
  4. Meteor.methods({
  5. reloadAccountsLockout() {
  6. // Check if user has admin rights
  7. const userId = Meteor.userId();
  8. if (!userId) {
  9. throw new Meteor.Error('error-invalid-user', 'Invalid user');
  10. }
  11. const user = ReactiveCache.getUser(userId);
  12. if (!user || !user.isAdmin) {
  13. throw new Meteor.Error('error-not-allowed', 'Not allowed');
  14. }
  15. try {
  16. // Get configurations from database
  17. const knownUsersConfig = {
  18. failuresBeforeLockout: LockoutSettings.findOne('known-failuresBeforeLockout')?.value || 3,
  19. lockoutPeriod: LockoutSettings.findOne('known-lockoutPeriod')?.value || 60,
  20. failureWindow: LockoutSettings.findOne('known-failureWindow')?.value || 15
  21. };
  22. const unknownUsersConfig = {
  23. failuresBeforeLockout: LockoutSettings.findOne('unknown-failuresBeforeLockout')?.value || 3,
  24. lockoutPeriod: LockoutSettings.findOne('unknown-lockoutPeriod')?.value || 60,
  25. failureWindow: LockoutSettings.findOne('unknown-failureWindow')?.value || 15
  26. };
  27. // Initialize the AccountsLockout with configuration
  28. const accountsLockout = new AccountsLockout({
  29. knownUsers: knownUsersConfig,
  30. unknownUsers: unknownUsersConfig,
  31. });
  32. // Start the accounts lockout mechanism
  33. accountsLockout.startup();
  34. return true;
  35. } catch (error) {
  36. console.error('Failed to reload accounts lockout:', error);
  37. throw new Meteor.Error('error-reloading-settings', 'Error reloading settings');
  38. }
  39. }
  40. });