github.com/turgay/mattermost-server@v5.3.2-0.20181002173352-2945e8a2b0ce+incompatible/api4/service_terms.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package api4
     5  
     6  import (
     7  	"github.com/mattermost/mattermost-server/app"
     8  	"github.com/mattermost/mattermost-server/model"
     9  	"net/http"
    10  )
    11  
    12  func (api *API) InitServiceTerms() {
    13  	api.BaseRoutes.ServiceTerms.Handle("", api.ApiSessionRequired(getServiceTerms)).Methods("GET")
    14  	api.BaseRoutes.ServiceTerms.Handle("", api.ApiSessionRequired(createServiceTerms)).Methods("POST")
    15  }
    16  
    17  func getServiceTerms(c *Context, w http.ResponseWriter, r *http.Request) {
    18  	serviceTerms, err := c.App.GetLatestServiceTerms()
    19  	if err != nil {
    20  		c.Err = err
    21  		return
    22  	}
    23  
    24  	w.Write([]byte(serviceTerms.ToJson()))
    25  }
    26  
    27  func createServiceTerms(c *Context, w http.ResponseWriter, r *http.Request) {
    28  	if license := c.App.License(); license == nil || !*license.Features.CustomTermsOfService {
    29  		c.Err = model.NewAppError("createServiceTerms", "api.create_service_terms.custom_service_terms_disabled.app_error", nil, "", http.StatusBadRequest)
    30  		return
    31  	}
    32  
    33  	props := model.MapFromJson(r.Body)
    34  	text := props["text"]
    35  	userId := c.Session.UserId
    36  
    37  	if text == "" {
    38  		c.Err = model.NewAppError("Config.IsValid", "api.create_service_terms.empty_text.app_error", nil, "", http.StatusBadRequest)
    39  		return
    40  	}
    41  
    42  	oldServiceTerms, err := c.App.GetLatestServiceTerms()
    43  	if err != nil && err.Id != app.ERROR_SERVICE_TERMS_NO_ROWS_FOUND {
    44  		c.Err = err
    45  		return
    46  	}
    47  
    48  	if oldServiceTerms == nil || oldServiceTerms.Text != text {
    49  		serviceTerms, err := c.App.CreateServiceTerms(text, userId)
    50  		if err != nil {
    51  			c.Err = err
    52  			return
    53  		}
    54  
    55  		w.Write([]byte(serviceTerms.ToJson()))
    56  	} else {
    57  		w.Write([]byte(oldServiceTerms.ToJson()))
    58  	}
    59  }