46 lines
1004 B
Ruby
46 lines
1004 B
Ruby
module Carto
|
|
class ApiKeyPermissions
|
|
attr_reader :name, :permissions
|
|
|
|
def initialize(name:, permissions: [])
|
|
@name = name
|
|
@permissions = permissions
|
|
end
|
|
|
|
def merge!(permissions)
|
|
down_permissions = permissions.map(&:downcase)
|
|
@permissions += down_permissions.reject { |p| @permissions.include?(p) }
|
|
end
|
|
|
|
def write?
|
|
!(@permissions & write_permissions).empty?
|
|
end
|
|
|
|
def write_permissions; end
|
|
end
|
|
|
|
class TablePermissions < ApiKeyPermissions
|
|
WRITE_PERMISSIONS = ['insert', 'update', 'delete', 'truncate'].freeze
|
|
|
|
attr_reader :schema, :owner
|
|
|
|
def initialize(schema:, name:, owner: false, permissions: [])
|
|
super(name: name, permissions: permissions)
|
|
@schema = schema
|
|
@owner = owner
|
|
end
|
|
|
|
def write_permissions
|
|
WRITE_PERMISSIONS
|
|
end
|
|
end
|
|
|
|
class SchemaPermissions < ApiKeyPermissions
|
|
WRITE_PERMISSIONS = ['create'].freeze
|
|
|
|
def write_permissions
|
|
WRITE_PERMISSIONS
|
|
end
|
|
end
|
|
end
|