89 lines
2 KiB
Go
89 lines
2 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/ente-io/museum/pkg/controller"
|
|
"github.com/ente-io/museum/pkg/utils/auth"
|
|
"github.com/ente-io/museum/pkg/utils/handler"
|
|
"github.com/ente-io/stacktrace"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type PasskeyHandler struct {
|
|
Controller *controller.PasskeyController
|
|
}
|
|
|
|
func (h *PasskeyHandler) GetPasskeys(c *gin.Context) {
|
|
userID := auth.GetUserID(c.Request.Header)
|
|
|
|
passkeys, err := h.Controller.GetPasskeys(userID)
|
|
if err != nil {
|
|
handler.Error(c, stacktrace.Propagate(err, ""))
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"passkeys": passkeys,
|
|
})
|
|
}
|
|
|
|
func (h *PasskeyHandler) RenamePasskey(c *gin.Context) {
|
|
userID := auth.GetUserID(c.Request.Header)
|
|
|
|
passkeyID := uuid.MustParse(c.Param("passkeyID"))
|
|
newName := c.Query("friendlyName")
|
|
|
|
err := h.Controller.RenamePasskey(userID, passkeyID, newName)
|
|
if err != nil {
|
|
handler.Error(c, stacktrace.Propagate(err, ""))
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{})
|
|
}
|
|
|
|
func (h *PasskeyHandler) DeletePasskey(c *gin.Context) {
|
|
userID := auth.GetUserID(c.Request.Header)
|
|
|
|
passkeyID := uuid.MustParse(c.Param("passkeyID"))
|
|
|
|
err := h.Controller.DeletePasskey(userID, passkeyID)
|
|
if err != nil {
|
|
handler.Error(c, stacktrace.Propagate(err, ""))
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{})
|
|
}
|
|
|
|
func (h *PasskeyHandler) BeginRegistration(c *gin.Context) {
|
|
userID := auth.GetUserID(c.Request.Header)
|
|
|
|
options, _, sessionID, err := h.Controller.BeginRegistration(userID)
|
|
if err != nil {
|
|
handler.Error(c, stacktrace.Propagate(err, ""))
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"options": options,
|
|
"sessionID": sessionID,
|
|
})
|
|
}
|
|
|
|
func (h *PasskeyHandler) FinishRegistration(c *gin.Context) {
|
|
userID := auth.GetUserID(c.Request.Header)
|
|
|
|
friendlyName := c.Query("friendlyName")
|
|
sessionID := uuid.MustParse(c.Query("sessionID"))
|
|
|
|
err := h.Controller.FinishRegistration(userID, friendlyName, c.Request, sessionID)
|
|
if err != nil {
|
|
handler.Error(c, stacktrace.Propagate(err, ""))
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{})
|
|
}
|