Ejemplo n.º 1
0
func ValidateEndpoint(feature features.Features) endpoint.Endpoint {
	return func(ctx context.Context, request interface{}) (interface{}, error) {
		req := request.(validationRequest)

		ff, err := feature.Find(req.Key)
		if err != nil {
			return HTTPResponse{StatusCode: http.StatusForbidden}, nil
		}

		var access bool
		if ff.Percentage > 0 || len(ff.Users) > 0 {
			if access = feature.UserHasAccess(req.Key, req.User); access {
				return HTTPResponse{StatusCode: http.StatusOK}, nil
			} else {
				return HTTPResponse{StatusCode: http.StatusForbidden}, nil
			}
		}

		if access, _ = feature.IsEnabled(req.Key); access {
			return HTTPResponse{StatusCode: http.StatusOK}, nil
		}

		return HTTPResponse{StatusCode: http.StatusForbidden}, nil
	}
}