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) }