make list group users work with uuid and usernames

This commit is contained in:
A.Unger
2020-10-22 13:10:06 +02:00
parent e0f59034cf
commit 9d4a8ac52f
2 changed files with 31 additions and 15 deletions
+6 -6
View File
@@ -46,12 +46,12 @@ const (
) )
const ( const (
userIDEinstein string = "einstein" userIDEinstein string = "4c510ada-c86b-4815-8820-42cdf82c3d51"
userIDMarie string = "marie" userIDMarie string = "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c"
userIDFeynman string = "richard" userIDFeynman string = "932b4540-8d16-481e-8ef4-588e4b6b151c"
userIDKonnectd string = "konnectd" userIDKonnectd string = "820ba2a1-3f54-4538-80a4-2d73007e30bf"
userIDReva string = "reva" userIDReva string = "bc596f3c-c955-4328-80a0-60d018b4ad57"
userIDMoss string = "moss" userIDMoss string = "058bff95-6708-4fe5-91e4-9ea3d377588b"
) )
const ( const (
+25 -9
View File
@@ -3,6 +3,7 @@ package svc
import ( import (
"fmt" "fmt"
"net/http" "net/http"
"regexp"
"github.com/go-chi/chi" "github.com/go-chi/chi"
"github.com/go-chi/render" "github.com/go-chi/render"
@@ -16,16 +17,26 @@ import (
// ListUserGroups lists a users groups // ListUserGroups lists a users groups
func (o Ocs) ListUserGroups(w http.ResponseWriter, r *http.Request) { func (o Ocs) ListUserGroups(w http.ResponseWriter, r *http.Request) {
userid := chi.URLParam(r, "userid") userid := chi.URLParam(r, "userid")
account, err := o.fetchAccountByUsername(r.Context(), userid) var account *accounts.Account
if err != nil { var err error
merr := merrors.FromError(err)
if merr.Code == http.StatusNotFound { if isValidUUID(userid) {
render.Render(w, r, response.ErrRender(data.MetaNotFound.StatusCode, "The requested user could not be found")) account, err = o.getAccountService().GetAccount(r.Context(), &accounts.GetAccountRequest{
} else { Id: userid,
render.Render(w, r, response.ErrRender(data.MetaServerError.StatusCode, err.Error())) })
} else {
// despite the confusion, if we make it here we got ourselves a username
account, err = o.fetchAccountByUsername(r.Context(), userid)
if err != nil {
merr := merrors.FromError(err)
if merr.Code == http.StatusNotFound {
render.Render(w, r, response.ErrRender(data.MetaNotFound.StatusCode, "The requested user could not be found"))
} else {
render.Render(w, r, response.ErrRender(data.MetaServerError.StatusCode, err.Error()))
}
o.logger.Error().Err(err).Str("userid", userid).Msg("could not get list of user groups")
return
} }
o.logger.Error().Err(err).Str("userid", userid).Msg("could not get list of user groups")
return
} }
groups := []string{} groups := []string{}
@@ -194,3 +205,8 @@ func (o Ocs) GetGroupMembers(w http.ResponseWriter, r *http.Request) {
o.logger.Error().Err(err).Int("count", len(members)).Str("groupid", groupid).Msg("listing group members") o.logger.Error().Err(err).Int("count", len(members)).Str("groupid", groupid).Msg("listing group members")
render.Render(w, r, response.DataRender(&data.Users{Users: members})) render.Render(w, r, response.DataRender(&data.Users{Users: members}))
} }
func isValidUUID(uuid string) bool {
r := regexp.MustCompile("^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[8|9|aA|bB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$")
return r.MatchString(uuid)
}