diff --git a/lib/decentralised_book_index/accounts/user.ex b/lib/decentralised_book_index/accounts/user.ex index 5a38c5e..08fbba4 100644 --- a/lib/decentralised_book_index/accounts/user.ex +++ b/lib/decentralised_book_index/accounts/user.ex @@ -218,6 +218,27 @@ defmodule DecentralisedBookIndex.Accounts.User do # Generates an authentication token for the user change AshAuthentication.GenerateTokenChange end + + update :set_role do + description "Sets user role" + accept [:role] + end + + update :make_moderator do + description "Sets user role to moderator" + change set_attribute(:role, :moderator) + end + + update :make_user do + description "Sets user role to user" + change set_attribute(:role, :user) + end + + read :list_moderators do + description "Looks up users with the moderator role" + + filter expr(role == :moderator) + end end policies do @@ -252,4 +273,15 @@ defmodule DecentralisedBookIndex.Accounts.User do identities do identity :unique_email, [:email] end + + code_interface do + define :list_moderators + + define :get_by_id, action: :read, get_by: [:id] + define :get_by_email, args: [:email] + + define :set_role, args: [:role] + define :make_moderator + define :make_user + end end