<.header> {gettext("Listing Roles")} <:subtitle> {gettext("Manage user roles and their permission sets.")} <:actions> <%= if can?(@current_user, :create, Mv.Authorization.Role) do %> <.button variant="primary" navigate={~p"/admin/roles/new"}> <.icon name="hero-plus" /> {gettext("New Role")} <% end %> <.table id="roles" rows={@roles} row_click={fn role -> JS.navigate(~p"/admin/roles/#{role}") end} row_tooltip={gettext("Click for role details")} > <:col :let={role} label={gettext("Name")}>
{role.name} <%= if role.is_system_role do %> {gettext("System Role")} <% end %>
<:col :let={role} label={gettext("Description")}> <%= if role.description do %> {role.description} <% else %> {gettext("No description")} <% end %> <:col :let={role} label={gettext("Permission Set")}> {role.permission_set_name} <:col :let={role} label={gettext("Type")}> <%= if role.is_system_role do %> {gettext("System")} <% else %> {gettext("Custom")} <% end %> <:col :let={role} label={gettext("Users")}> {get_user_count(role, @user_counts)} <:action :let={role}>
<.link navigate={~p"/admin/roles/#{role}"}>{gettext("Show")}
<%= if can?(@current_user, :update, Mv.Authorization.Role) do %> <.button variant="ghost" size="sm" navigate={~p"/admin/roles/#{role}/edit"}> <.icon name="hero-pencil" class="size-4" /> {gettext("Edit role")} <% end %> <:action :let={role}> <%= if can?(@current_user, :destroy, Mv.Authorization.Role) and not role.is_system_role do %> <.button variant="danger" size="sm" phx-click={JS.push("delete", value: %{id: role.id}) |> hide("#row-#{role.id}")} data-confirm={gettext("Are you sure?")} > <.icon name="hero-trash" class="size-4" /> {gettext("Delete")} <% else %> <.tooltip :if={role.is_system_role} content={gettext("System roles cannot be deleted")} position="left" > <% end %>