From 9f070d9ebbfefbfbca689d440f59580f32bfc6d0 Mon Sep 17 00:00:00 2001 From: Daniel Valdivia <18384552+dvaldivia@users.noreply.github.com> Date: Tue, 14 Sep 2021 15:23:38 -0700 Subject: [PATCH] Fix Users with + in the name (#1045) Signed-off-by: Daniel Valdivia <18384552+dvaldivia@users.noreply.github.com> --- portal-ui/src/screens/Console/Users/UserDetails.tsx | 4 ++-- restapi/admin_users.go | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/portal-ui/src/screens/Console/Users/UserDetails.tsx b/portal-ui/src/screens/Console/Users/UserDetails.tsx index 67f2d9760..0e4ba5185 100644 --- a/portal-ui/src/screens/Console/Users/UserDetails.tsx +++ b/portal-ui/src/screens/Console/Users/UserDetails.tsx @@ -168,7 +168,7 @@ const UserDetails = ({ classes, match }: IUserDetailsProps) => { } setLoading(true); api - .invoke("GET", `/api/v1/user?name=${encodeURI(userName)}`) + .invoke("GET", `/api/v1/user?name=${encodeURIComponent(userName)}`) .then((res) => { setAddLoading(false); const memberOf = res.memberOf || []; @@ -204,7 +204,7 @@ const UserDetails = ({ classes, match }: IUserDetailsProps) => { } setAddLoading(true); api - .invoke("PUT", `/api/v1/user?name=${encodeURI(userName)}`, { + .invoke("PUT", `/api/v1/user?name=${encodeURIComponent(userName)}`, { status: isEnabled ? "enabled" : "disabled", groups: selectedGroups, }) diff --git a/restapi/admin_users.go b/restapi/admin_users.go index bc0b36d3a..e22ee4891 100644 --- a/restapi/admin_users.go +++ b/restapi/admin_users.go @@ -22,6 +22,8 @@ import ( "sort" "strings" + "github.com/go-openapi/swag" + "github.com/go-openapi/errors" "github.com/go-openapi/runtime/middleware" "github.com/minio/console/models" @@ -278,6 +280,12 @@ func getUserInfoResponse(session *models.Principal, params admin_api.GetUserInfo user, err := getUserInfo(ctx, adminClient, params.Name) if err != nil { + // User doesn't exist, return 404 + if madmin.ToErrorResponse(err).Code == "XMinioAdminNoSuchUser" { + var errorCode int32 = 404 + errorMessage := "User doesn't exist" + return nil, &models.Error{Code: errorCode, Message: swag.String(errorMessage), DetailedMessage: swag.String(err.Error())} + } return nil, prepareError(err) }