Skip to content

Instantly share code, notes, and snippets.

@baldwindavid
Last active March 17, 2021 16:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save baldwindavid/340cc6f0070d93b63f8ea429adbf0b6b to your computer and use it in GitHub Desktop.
Save baldwindavid/340cc6f0070d93b63f8ea429adbf0b6b to your computer and use it in GitHub Desktop.
############################################################
# APP ROLES
############################################################
def insert_app_super_admin_role, do: insert(:super_admin) |> Roles.role_for()
def insert_app_admin_role, do: insert(:admin) |> Roles.role_for()
def insert_app_marketer_role, do: insert(:marketer) |> Roles.role_for()
def insert_app_user_role, do: insert(:user) |> Roles.role_for()
def insert_all_app_roles, do: insert_app_roles(@roles)
def insert_app_marketer_or_better_roles,
do: insert_app_roles([:marketer, :super_admin])
def insert_app_admin_or_better_roles,
do: insert_app_roles([:admin, :marketer, :super_admin])
def insert_worse_than_app_super_admin_roles,
do: insert_app_roles([:member, :marketer, :admin])
def insert_worse_than_app_marketer_roles, do: insert_app_roles([:member, :admin])
def insert_worse_than_app_admin_roles, do: insert_app_roles([:member])
defp insert_app_roles(role_name_or_names) do
role_name_or_names
|> Enum.map(&insert(&1))
|> Enum.map(users, &Roles.role_for/1)
end
############################################################
# PROPERTY ROLES
############################################################
def insert_property_manager_or_better_roles_of(property) do
[
insert_property_manager_role_of(property)
]
end
def insert_property_viewer_or_better_roles_of(property) do
[
insert_property_manager_role_of(property),
insert_property_viewer_role_of(property)
]
end
def insert_worse_than_property_manager_roles_of(property) do
[
insert_property_viewer_role_of(property)
]
end
def insert_worse_than_property_manager_roles do
[
insert_property_viewer_role()
]
end
def insert_all_property_roles do
[
insert_property_manager_role(),
insert_property_viewer_role()
]
end
def insert_all_property_roles_of(property) do
[
insert_property_manager_role_of(property),
insert_property_viewer_role_of(property)
]
end
def insert_property_manager_role_of(property) do
manager_of_property = insert(:user)
insert(:property_manager, property: property, user: manager_of_property)
Roles.role_for(manager_of_property)
end
def insert_property_manager_role do
manager_of_property = insert(:user)
insert(:property_manager, user: manager_of_property)
Roles.role_for(manager_of_property)
end
def insert_property_viewer_role do
viewer_of_property = insert(:user)
insert(:property_permission, user: viewer_of_property, name: :viewer)
Roles.role_for(viewer_of_property)
end
def insert_property_viewer_role_of(property) do
viewer_of_property = insert(:user)
insert(:property_permission, property: property, user: viewer_of_property, name: :viewer)
Roles.role_for(viewer_of_property)
end
############################################################
# ACCOUNT ROLES
############################################################
def insert_account_admin_role_of(account) do
account_admin = insert(:user)
insert(:account_admin_membership, account: account, user: account_admin)
Roles.role_for(account_admin)
end
def insert_account_admin_role do
account_admin = insert(:user)
insert(:account_admin_membership, user: account_admin)
Roles.role_for(account_admin)
end
def insert_account_member_role_of(account) do
account_member = insert(:user)
insert(:membership, user: account_member, account: account)
Roles.role_for(account_member)
end
def insert_account_member_role do
account_member = insert(:user)
insert(:membership, user: account_member)
Roles.role_for(account_member)
end
def insert_all_account_roles do
[
insert_account_member(),
insert_account_admin_role()
]
end
def insert_all_account_roles_of(account) do
[
insert_account_member_role_of(account),
insert_account_admin_role_of(account)
]
end
def insert_account_member_or_better_roles_of(account) do
[
insert_account_member_role_of(account),
insert_account_admin_role_of(account)
]
end
def insert_account_member_or_better_roles do
[
insert_account_member,
insert_account_admin_role
]
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment