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.
462 463 464 465 466 467 468 469 470 471 472 473 |
# File 'lib/mxrb/dsl/builder.rb', line 462 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
490 491 492 |
# File 'lib/mxrb/dsl/builder.rb', line 490 def admin_user_role(name) @admin_user_role = name.to_s end |
#demo_user(name, entity:, roles:, password:) ⇒ Object
498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 |
# File 'lib/mxrb/dsl/builder.rb', line 498 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
494 495 496 |
# File 'lib/mxrb/dsl/builder.rb', line 494 def demo_users(enabled = true) @demo_users_enabled = enabled == true end |
#evaluate(path) ⇒ Object
518 519 520 |
# File 'lib/mxrb/dsl/builder.rb', line 518 def evaluate(path) instance_eval(File.read(path), path, 1) end |
#evaluate_dir(dir) ⇒ Object
522 523 524 525 526 |
# File 'lib/mxrb/dsl/builder.rb', line 522 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
528 529 530 531 |
# File 'lib/mxrb/dsl/builder.rb', line 528 def guest_access(enabled = true, role: nil) @guest_access_enabled = enabled == true @guest_user_role = role&.to_s end |
#password_policy(**options) ⇒ Object
537 538 539 |
# File 'lib/mxrb/dsl/builder.rb', line 537 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.
478 479 480 |
# File 'lib/mxrb/dsl/builder.rb', line 478 def security_level(value) @security_level = value.to_s end |
#sign_in_microflow(name) ⇒ Object
533 534 535 |
# File 'lib/mxrb/dsl/builder.rb', line 533 def sign_in_microflow(name) @sign_in_microflow = name&.to_s end |
#to_h ⇒ Object
541 542 543 544 545 546 547 548 549 550 551 552 553 |
# File 'lib/mxrb/dsl/builder.rb', line 541 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
482 483 484 485 486 487 488 |
# File 'lib/mxrb/dsl/builder.rb', line 482 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 |