from django.contrib.auth.decorators import login_required from django.http import HttpRequest, HttpResponse, HttpResponseForbidden, JsonResponse from django.shortcuts import redirect, render from coulomb_social.apps.spaces.services import spaces_for_member from .principal import build_principal def landing(request: HttpRequest) -> HttpResponse: if request.user.is_authenticated: return redirect("core:app_home") return render(request, "core/landing.html") @login_required def app_home(request: HttpRequest) -> HttpResponse: principal = build_principal(request, authz_resource_id="app_home") if not principal["authz_allow"]: return HttpResponseForbidden( f"Not authorized to view shell ({principal['authz_reason']})." ) member = principal.get("member") spaces = list(spaces_for_member(member)) return render( request, "core/app_home.html", { "principal": principal, "display_name": principal["display_name"], "spaces": spaces, }, ) @login_required def account_session(request: HttpRequest) -> HttpResponse: """Principal / session diagnostics (profile menu → T07).""" principal = build_principal(request, authz_resource_id="account_session") if not principal["authz_allow"]: return HttpResponseForbidden( f"Not authorized to view session details ({principal['authz_reason']})." ) return render( request, "core/account_session.html", { "principal": principal, "display_name": principal["display_name"], }, ) def healthz(_request: HttpRequest) -> JsonResponse: return JsonResponse({"status": "ok", "service": "coulomb-social"})