github.com/kongr45gpen/mattermost-server@v5.11.1+incompatible/api4/handlers.go (about)

     1  // Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package api4
     5  
     6  import (
     7  	"net/http"
     8  
     9  	"github.com/mattermost/mattermost-server/web"
    10  )
    11  
    12  type Context = web.Context
    13  
    14  // ApiHandler provides a handler for API endpoints which do not require the user to be logged in order for access to be
    15  // granted.
    16  func (api *API) ApiHandler(h func(*Context, http.ResponseWriter, *http.Request)) http.Handler {
    17  	return &web.Handler{
    18  		GetGlobalAppOptions: api.GetGlobalAppOptions,
    19  		HandleFunc:          h,
    20  		RequireSession:      false,
    21  		TrustRequester:      false,
    22  		RequireMfa:          false,
    23  		IsStatic:            false,
    24  	}
    25  }
    26  
    27  // ApiSessionRequired provides a handler for API endpoints which require the user to be logged in in order for access to
    28  // be granted.
    29  func (api *API) ApiSessionRequired(h func(*Context, http.ResponseWriter, *http.Request)) http.Handler {
    30  	return &web.Handler{
    31  		GetGlobalAppOptions: api.GetGlobalAppOptions,
    32  		HandleFunc:          h,
    33  		RequireSession:      true,
    34  		TrustRequester:      false,
    35  		RequireMfa:          true,
    36  		IsStatic:            false,
    37  	}
    38  }
    39  
    40  // ApiSessionRequiredMfa provides a handler for API endpoints which require a logged-in user session  but when accessed,
    41  // if MFA is enabled, the MFA process is not yet complete, and therefore the requirement to have completed the MFA
    42  // authentication must be waived.
    43  func (api *API) ApiSessionRequiredMfa(h func(*Context, http.ResponseWriter, *http.Request)) http.Handler {
    44  	return &web.Handler{
    45  		GetGlobalAppOptions: api.GetGlobalAppOptions,
    46  		HandleFunc:          h,
    47  		RequireSession:      true,
    48  		TrustRequester:      false,
    49  		RequireMfa:          false,
    50  		IsStatic:            false,
    51  	}
    52  }
    53  
    54  // ApiHandlerTrustRequester provides a handler for API endpoints which do not require the user to be logged in and are
    55  // allowed to be requested directly rather than via javascript/XMLHttpRequest, such as site branding images or the
    56  // websocket.
    57  func (api *API) ApiHandlerTrustRequester(h func(*Context, http.ResponseWriter, *http.Request)) http.Handler {
    58  	return &web.Handler{
    59  		GetGlobalAppOptions: api.GetGlobalAppOptions,
    60  		HandleFunc:          h,
    61  		RequireSession:      false,
    62  		TrustRequester:      true,
    63  		RequireMfa:          false,
    64  		IsStatic:            false,
    65  	}
    66  }
    67  
    68  // ApiSessionRequiredTrustRequester provides a handler for API endpoints which do require the user to be logged in and
    69  // are allowed to be requested directly rather than via javascript/XMLHttpRequest, such as emoji or file uploads.
    70  func (api *API) ApiSessionRequiredTrustRequester(h func(*Context, http.ResponseWriter, *http.Request)) http.Handler {
    71  	return &web.Handler{
    72  		GetGlobalAppOptions: api.GetGlobalAppOptions,
    73  		HandleFunc:          h,
    74  		RequireSession:      true,
    75  		TrustRequester:      true,
    76  		RequireMfa:          true,
    77  		IsStatic:            false,
    78  	}
    79  }