Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add role and resource migration #121

Merged
merged 1 commit into from
May 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions server/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ gem "multiwoven-integrations", "~> 0.1.64"

gem "temporal-ruby", github: "coinbase/temporal-ruby"

gem "data_migrate"
gem "parallel"
gem "pg", "~> 1.1" # PostgreSQL Database
gem "puma", ">= 5.0" # Web server
Expand Down
4 changes: 4 additions & 0 deletions server/Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1665,6 +1665,9 @@ GEM
css_parser (1.17.1)
addressable
csv (3.3.0)
data_migrate (9.4.0)
activerecord (>= 6.1)
railties (>= 6.1)
date (3.3.4)
declarative (0.0.20)
devise (4.9.3)
Expand Down Expand Up @@ -2128,6 +2131,7 @@ DEPENDENCIES
bootsnap
bullet
byebug
data_migrate
devise
devise-jwt
discard
Expand Down
61 changes: 61 additions & 0 deletions server/db/data/20240513072634_add_roles.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# frozen_string_literal: true

class AddRoles < ActiveRecord::Migration[7.1]
def up
Role.create!(
role_name: "Admin",
role_desc: "Administrator role with full access",
policies: [
{
action: "allow",
permissions: "*",
resources: "*"
}
]
)

Role.create!(
role_name: "Member",
role_desc: "Member role with basic access",
policies: [
{
action: "allow",
permissions: "*",
resources: %w[
connector_definition
connector
model
report
sync_record
sync_run
sync
user
]
}
]
)
Role.create!(
role_name: "Viewer",
role_desc: "Viewer role with read-only access",
policies: [
{
action: "allow",
permissions: ["read"],
resources: %w[
connector
model
report
sync_record
sync_run
sync
user
]
}
]
)
end

def down
Role.where(role_name: %w[Admin Member Viewer]).destroy_all
end
end
56 changes: 56 additions & 0 deletions server/db/data/20240513073101_add_resources.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# frozen_string_literal: true

class AddResources < ActiveRecord::Migration[7.1]
def up
resources_data = [
{
resources_name: "workspace",
permissions: %w[create read update delete]
},
{
resources_name: "sync",
permissions: %w[create read update delete configuration]
},
{
resources_name: "model",
permissions: %w[create read update delete]
},
{
resources_name: "connector",
permissions: %w[create read update delete discover query_source]
},
{
resources_name: "connector_definition",
permissions: %w[read check_connection]
},
{
resources_name: "report",
permissions: ["read"]
},
{
resources_name: "sync_run",
permissions: ["read"]
},
{
resources_name: "sync_record",
permissions: ["read"]
},
{
resources_name: "user",
permissions: ["read"]
}
]

resources_data.each do |resource_data|
resource = Resource.create!(
resources_name: resource_data[:resources_name],
permissions: resource_data[:permissions]
)
puts "Resource '#{resource.resources_name}' created successfully with permissions: #{resource.permissions}"
end
end

def down
Resource.destroy_all
end
end
3 changes: 3 additions & 0 deletions server/db/data_schema.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# frozen_string_literal: true

DataMigrate::Data.define(version: 20_240_513_073_101)
10 changes: 10 additions & 0 deletions server/db/migrate/20240506111708_create_resources.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class CreateResources < ActiveRecord::Migration[7.1]
def change
create_table :resources do |t|
t.string :resources_name
t.text :permissions, array: true, default: []

t.timestamps
end
end
end
11 changes: 11 additions & 0 deletions server/db/migrate/20240506111803_create_roles.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class CreateRoles < ActiveRecord::Migration[7.1]
def change
create_table :roles do |t|
t.string :role_name
t.string :role_desc
t.jsonb :policies, default: {}

t.timestamps
end
end
end
20 changes: 19 additions & 1 deletion server/db/schema.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading