mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-05-02 02:00:20 -05:00
44 lines
899 B
Go
44 lines
899 B
Go
package users
|
|
|
|
import (
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/shroff/phylum/server/internal/api/v1/responses"
|
|
"github.com/shroff/phylum/server/internal/core/user"
|
|
)
|
|
|
|
func SetupUserRoutes(r *gin.RouterGroup) {
|
|
group := r.Group("/users")
|
|
group.GET("/list", handleUsersListRoute)
|
|
}
|
|
|
|
func handleUsersListRoute(c *gin.Context) {
|
|
var since *time.Time
|
|
sinceStr := c.Query("since")
|
|
if sinceStr != "" {
|
|
sinceInt, err := strconv.ParseInt(sinceStr, 10, 64)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
t := time.UnixMilli(sinceInt - 1000).UTC()
|
|
since = &t
|
|
}
|
|
users, err := user.ManagerFromContext(c.Request.Context()).ListUsers(since)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
result := make([]responses.User, len(users))
|
|
for i, u := range users {
|
|
result[i] = responses.User{
|
|
Username: u.Username,
|
|
DisplayName: u.DisplayName,
|
|
}
|
|
}
|
|
|
|
c.JSON(200, gin.H{
|
|
"users": result,
|
|
})
|
|
}
|