package com.home4j.resource;

import io.quarkus.qute.Template;
import io.quarkus.qute.TemplateInstance;
import io.quarkus.security.Authenticated;
import jakarta.inject.Inject;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.NewCookie;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.SecurityContext;

import java.net.URI;

/**
 * 登录控制器
 */
@Path("/login")
public class LoginResource {

    @Inject
    Template login;

    /**
     * 显示登录页面
     */
    @GET
    @Produces(MediaType.TEXT_HTML)
    public TemplateInstance loginPage(@QueryParam("error") String error) {
        return login.data("error", error != null);
    }

    /**
     * 登录失败处理
     */
    @GET
    @Path("/error")
    @Produces(MediaType.TEXT_HTML)
    public TemplateInstance loginError() {
        return login.data("error", true);
    }

    /**
     * 登出 - 清除 session cookie
     */
    @GET
    @Path("/logout")
    public Response logout() {
        // 创建一个过期的 cookie 来清除 session
        NewCookie expiredCookie = new NewCookie.Builder("home4j-session")
                .path("/")
                .maxAge(0)
                .httpOnly(true)
                .build();
        
        return Response.seeOther(URI.create("/"))
                .cookie(expiredCookie)
                .build();
    }

    /**
     * 检查登录状态 API
     */
    @GET
    @Path("/check")
    @Produces(MediaType.APPLICATION_JSON)
    public Response checkLogin(@Context SecurityContext securityContext) {
        if (securityContext.getUserPrincipal() != null) {
            return Response.ok().entity("{\"authenticated\": true, \"username\": \"" + 
                    securityContext.getUserPrincipal().getName() + "\"}").build();
        }
        return Response.ok().entity("{\"authenticated\": false}").build();
    }
}
