Class: Mxrb::Dsl::SecurityBuilder
- Inherits:
-
Object
- Object
- Mxrb::Dsl::SecurityBuilder
- Defined in:
- lib/mxrb/dsl/builder.rb
Instance Method Summary collapse
- #admin_user_role(name) ⇒ Object
- #demo_user(name, entity:, roles:, password:) ⇒ Object
- #demo_users(enabled = true) ⇒ Object
- #evaluate(path) ⇒ Object
- #evaluate_dir(dir) ⇒ Object
- #guest_access(enabled = true, role: nil) ⇒ Object
-
#initialize ⇒ SecurityBuilder
constructor
A new instance of SecurityBuilder.
- #password_policy(**options) ⇒ Object
-
#security_level(value) ⇒ Object
Mendix stores the project security mode as an enum-like string such as "CheckNothing" or "CheckEverything".
- #sign_in_microflow(name) ⇒ Object
- #to_h ⇒ Object
- #user_role(name, module_roles: [], admin: false) ⇒ Object
Constructor Details
#initialize ⇒ SecurityBuilder
Returns a new instance of SecurityBuilder.
431 432 433 434 435 436 437 438 439 440 441 442 |
# File 'lib/mxrb/dsl/builder.rb', line 431 def initialize @user_roles = [] @demo_users = [] @demo_users_declared = false @security_level = nil @admin_user_role = nil @demo_users_enabled = nil @guest_access_enabled = nil @guest_user_role = nil @sign_in_microflow = nil @password_policy = nil end |
Instance Method Details
#admin_user_role(name) ⇒ Object
459 460 461 |
# File 'lib/mxrb/dsl/builder.rb', line 459 def admin_user_role(name) @admin_user_role = name.to_s end |
#demo_user(name, entity:, roles:, password:) ⇒ Object
467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 |
# File 'lib/mxrb/dsl/builder.rb', line 467 def demo_user(name, entity:, roles:, password:) user_name = name.to_s entity_name = entity.to_s role_names = Array(roles).map(&:to_s).uniq secret = password.to_s raise ArgumentError, 'demo user name must not be empty' if user_name.empty? raise ArgumentError, 'demo user name must not contain whitespace' unless user_name.match?(/\A[^\s]+\z/) unless entity_name.match?(/\A[A-Za-z][A-Za-z0-9_]*\.[A-Za-z][A-Za-z0-9_]*\z/) raise ArgumentError, 'demo user entity must be qualified as Module.Entity' end raise ArgumentError, 'demo user requires at least one role' if role_names.empty? raise ArgumentError, 'demo user password must not be empty' if secret.empty? @demo_users << { name: user_name, entity: entity_name, roles: role_names, password: secret } @demo_users_declared = true @demo_users_enabled = true end |
#demo_users(enabled = true) ⇒ Object
463 464 465 |
# File 'lib/mxrb/dsl/builder.rb', line 463 def demo_users(enabled = true) @demo_users_enabled = enabled == true end |
#evaluate(path) ⇒ Object
487 488 489 |
# File 'lib/mxrb/dsl/builder.rb', line 487 def evaluate(path) instance_eval(File.read(path), path, 1) end |
#evaluate_dir(dir) ⇒ Object
491 492 493 494 495 |
# File 'lib/mxrb/dsl/builder.rb', line 491 def evaluate_dir(dir) return unless File.directory?(dir) Dir[File.join(dir, '*.rb')].sort.each { |path| evaluate(path) } end |
#guest_access(enabled = true, role: nil) ⇒ Object
497 498 499 500 |
# File 'lib/mxrb/dsl/builder.rb', line 497 def guest_access(enabled = true, role: nil) @guest_access_enabled = enabled == true @guest_user_role = role&.to_s end |
#password_policy(**options) ⇒ Object
506 507 508 |
# File 'lib/mxrb/dsl/builder.rb', line 506 def password_policy(**) @password_policy = .transform_keys(&:to_sym) end |
#security_level(value) ⇒ Object
Mendix stores the project security mode as an enum-like string such as "CheckNothing" or "CheckEverything". Keep the native value explicit so export/import does not silently weaken project security.
447 448 449 |
# File 'lib/mxrb/dsl/builder.rb', line 447 def security_level(value) @security_level = value.to_s end |
#sign_in_microflow(name) ⇒ Object
502 503 504 |
# File 'lib/mxrb/dsl/builder.rb', line 502 def sign_in_microflow(name) @sign_in_microflow = name&.to_s end |
#to_h ⇒ Object
510 511 512 513 514 515 516 517 518 519 520 521 522 |
# File 'lib/mxrb/dsl/builder.rb', line 510 def to_h { user_roles: @user_roles, demo_users: @demo_users_declared ? @demo_users : nil, security_level: @security_level, admin_user_role: @admin_user_role, demo_users_enabled: @demo_users_enabled, guest_access_enabled: @guest_access_enabled, guest_user_role: @guest_user_role, sign_in_microflow: @sign_in_microflow, password_policy: @password_policy } end |
#user_role(name, module_roles: [], admin: false) ⇒ Object
451 452 453 454 455 456 457 |
# File 'lib/mxrb/dsl/builder.rb', line 451 def user_role(name, module_roles: [], admin: false) @user_roles << { name: name.to_s, module_roles: Array(module_roles).map(&:to_s), admin: admin } end |