Introduce admin and moderator role, check role on list_users action

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

Add test for guards
This commit is contained in:
Thomas Citharel
2019-03-06 18:45:26 +01:00
parent f4c09c36a7
commit cb0808dbad
10 changed files with 137 additions and 11 deletions

View File

@@ -0,0 +1,41 @@
defmodule Mobilizon.Repo.Migrations.MoveUserRoleToEnum do
use Ecto.Migration
alias Mobilizon.Users.UserRoleEnum
def up do
UserRoleEnum.create_type()
alter table(:users) do
add(:role_tmp, UserRoleEnum.type(), default: "user")
end
execute("UPDATE users set role_tmp = 'user' where role = 0")
execute("UPDATE users set role_tmp = 'moderator' where role = 1")
execute("UPDATE users set role_tmp = 'administrator' where role = 2")
alter table(:users) do
remove(:role)
end
rename(table(:users), :role_tmp, to: :role)
end
def down do
alter table(:users) do
add(:role_tmp, :integer, default: 0)
end
execute("UPDATE users set role_tmp = 0 where role = 'user'")
execute("UPDATE users set role_tmp = 1 where role = 'moderator'")
execute("UPDATE users set role_tmp = 2 where role = 'administrator'")
alter table(:users) do
remove(:role)
end
UserRoleEnum.drop_type()
rename(table(:users), :role_tmp, to: :role)
end
end