From 92cb5d342c16ab3ea68a89496b28cda923459d7b Mon Sep 17 00:00:00 2001 From: KKlochko Date: Fri, 11 Apr 2025 11:04:30 +0300 Subject: [PATCH] Update User's actions to manage roles. --- lib/decentralised_book_index/accounts/user.ex | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) 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