github.com/cs3org/reva/v2@v2.27.7/internal/http/services/owncloud/ocs/handlers/cloud/user/user.go (about)

     1  // Copyright 2018-2021 CERN
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  //
    15  // In applying this license, CERN does not waive the privileges and immunities
    16  // granted to it by virtue of its status as an Intergovernmental Organization
    17  // or submit itself to any jurisdiction.
    18  
    19  package user
    20  
    21  import (
    22  	"fmt"
    23  	"net/http"
    24  
    25  	"github.com/cs3org/reva/v2/internal/http/services/owncloud/ocs/response"
    26  	"github.com/cs3org/reva/v2/pkg/conversions"
    27  	ctxpkg "github.com/cs3org/reva/v2/pkg/ctx"
    28  )
    29  
    30  // The Handler renders the user endpoint
    31  type Handler struct {
    32  }
    33  
    34  // GetSelf handles GET requests on /cloud/user
    35  func (h *Handler) GetSelf(w http.ResponseWriter, r *http.Request) {
    36  	ctx := r.Context()
    37  
    38  	// TODO move user to handler parameter?
    39  	u, ok := ctxpkg.ContextGetUser(ctx)
    40  	if !ok {
    41  		response.WriteOCSError(w, r, response.MetaServerError.StatusCode, "missing user in context", fmt.Errorf("missing user in context"))
    42  		return
    43  	}
    44  
    45  	response.WriteOCSSuccess(w, r, &User{
    46  		ID:          u.Username,
    47  		DisplayName: u.DisplayName,
    48  		Email:       u.Mail,
    49  		UserType:    conversions.UserTypeString(u.Id.Type),
    50  	})
    51  }
    52  
    53  // User holds user data
    54  type User struct {
    55  	ID          string `json:"id" xml:"id"`                     // UserID in ocs is the owncloud internal username
    56  	DisplayName string `json:"display-name" xml:"display-name"` // is used in ocs/v(1|2).php/cloud/user - yes this is different from the users endpoint
    57  	Email       string `json:"email" xml:"email"`
    58  	UserType    string `json:"user-type" xml:"user-type"`
    59  }