54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type internalNetworkIdentity struct {
|
|
UUID string `json:"uuid"`
|
|
Email string `json:"email"`
|
|
AccountUUID string `json:"accountUuid"`
|
|
}
|
|
|
|
func (h *handler) internalNetworkIdentities(c *gin.Context) {
|
|
if h.store == nil {
|
|
respondError(c, http.StatusServiceUnavailable, "store_unavailable", "identity store is not available")
|
|
return
|
|
}
|
|
|
|
users, err := h.store.ListUsers(c.Request.Context())
|
|
if err != nil {
|
|
respondError(c, http.StatusInternalServerError, "list_users_failed", "failed to load network identities")
|
|
return
|
|
}
|
|
|
|
identities := make([]internalNetworkIdentity, 0, len(users))
|
|
for _, user := range users {
|
|
if !user.Active {
|
|
continue
|
|
}
|
|
uuid := strings.TrimSpace(user.ProxyUUID)
|
|
if uuid == "" {
|
|
uuid = strings.TrimSpace(user.ID)
|
|
}
|
|
if uuid == "" {
|
|
continue
|
|
}
|
|
|
|
identities = append(identities, internalNetworkIdentity{
|
|
UUID: uuid,
|
|
Email: strings.ToLower(strings.TrimSpace(user.Email)),
|
|
AccountUUID: strings.TrimSpace(user.ID),
|
|
})
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"generatedAt": time.Now().UTC(),
|
|
"identities": identities,
|
|
})
|
|
}
|