defmodule DaProductApp.SaasKit.Users do @moduledoc """ Module for handling user management through SaaS Kit. """ alias DaProductApp.SaasKit.Client @doc """ Create a new user """ def create_user(user_data) do Client.post("/users", user_data) end @doc """ Get user by ID """ def get_user(user_id) do Client.get("/users/#{user_id}") end @doc """ Update user information """ def update_user(user_id, user_data) do Client.put("/users/#{user_id}", user_data) end @doc """ Delete a user """ def delete_user(user_id) do Client.delete("/users/#{user_id}") end @doc """ List users with optional filters """ def list_users(params \\ %{}) do Client.get("/users", params) end @doc """ Authenticate a user """ def authenticate_user(email, password) do body = %{ email: email, password: password } Client.post("/auth/login", body) end @doc """ Get user permissions """ def get_user_permissions(user_id) do Client.get("/users/#{user_id}/permissions") end @doc """ Update user permissions """ def update_user_permissions(user_id, permissions) do body = %{permissions: permissions} Client.put("/users/#{user_id}/permissions", body) end @doc """ Get user's organization/tenant information """ def get_user_organization(user_id) do Client.get("/users/#{user_id}/organization") end @doc """ Invite a user to an organization """ def invite_user(organization_id, email, role \\ "member") do body = %{ organization_id: organization_id, email: email, role: role } Client.post("/invitations", body) end @doc """ Accept an invitation """ def accept_invitation(invitation_token, user_data) do body = Map.put(user_data, :invitation_token, invitation_token) Client.post("/invitations/accept", body) end end