Sha256: 19e81890866144c1ee37fd7e85b0b690434c193b23160f1bcaac5f858815ed9f

Contents?: true

Size: 841 Bytes

Versions: 3

Compression:

Stored size: 841 Bytes

Contents

# frozen_string_literal: true

module Hachi
  module Models
    class User < Base
      attr_reader :login
      attr_reader :name
      attr_reader :roles
      attr_reader :password

      ROLES = %w(read write admin).freeze

      def initialize(login:, name:, roles:, password:)
        @login = login
        @name = name
        @roles = roles
        @password = password

        validate_roles
      end

      def payload
        {
          login: login,
          name: name,
          roles: roles,
          password: password
        }.compact
      end

      private

      def validate_roles
        raise ArgumentError, "roles should be an array" unless roles.is_a?(Array)
        raise ArgumentError, "role should be one of #{ROLES.join('.')}" unless roles.all? { |role| ROLES.include? role }
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
hachi-0.3.2 lib/hachi/models/user.rb
hachi-0.3.1 lib/hachi/models/user.rb
hachi-0.3.0 lib/hachi/models/user.rb