func (h *Handler) Create(ctx context.Context, rw http.ResponseWriter, req *http.Request) { subject, ok := mux.Vars(req)["subject"] if !ok { http.Error(rw, "No subject given.", http.StatusBadRequest) return } var conn DefaultConnection decoder := json.NewDecoder(req.Body) if err := decoder.Decode(&conn); err != nil { http.Error(rw, "Could not decode request: "+err.Error(), http.StatusBadRequest) return } if v, err := govalidator.ValidateStruct(conn); !v { if err != nil { http.Error(rw, err.Error(), http.StatusBadRequest) return } http.Error(rw, "Payload did not validate.", http.StatusBadRequest) return } conn.ID = uuid.New() conn.LocalSubject = subject if err := h.s.Create(&conn); err != nil { http.Error(rw, err.Error(), http.StatusInternalServerError) return } WriteJSON(rw, &conn) }
func (h *Handler) Delete(ctx context.Context, rw http.ResponseWriter, req *http.Request) { id, ok := mux.Vars(req)["id"] if !ok { http.Error(rw, "No id given.", http.StatusBadRequest) return } h.m.IsAuthorized(permission(id), "delete", middleware.Env(req).Owner(id))(hydcon.ContextHandlerFunc( func(ctx context.Context, rw http.ResponseWriter, req *http.Request) { if err := h.s.Delete(id); err != nil { http.Error(rw, err.Error(), http.StatusInternalServerError) return } rw.WriteHeader(http.StatusAccepted) }), ).ServeHTTPContext(ctx, rw, req) }
func (h *Handler) Delete(ctx context.Context, rw http.ResponseWriter, req *http.Request) { id, ok := mux.Vars(req)["id"] if !ok { http.Error(rw, "No id given.", http.StatusBadRequest) return } h.m.IsAuthorized(permission(id), "delete", nil)(hctx.ContextHandlerFunc( func(ctx context.Context, rw http.ResponseWriter, req *http.Request) { if err := h.s.Delete(id); err != nil { http.Error(rw, fmt.Sprintf("Could not retrieve client: %s", id), http.StatusInternalServerError) return } rw.WriteHeader(http.StatusAccepted) }, )).ServeHTTPContext(ctx, rw, req) }
func (h *Handler) Get(ctx context.Context, rw http.ResponseWriter, req *http.Request) { id, ok := mux.Vars(req)["id"] if !ok { http.Error(rw, "No id given.", http.StatusBadRequest) return } h.m.IsAuthorized(permission(id), "get", nil)(hctx.ContextHandlerFunc( func(ctx context.Context, rw http.ResponseWriter, req *http.Request) { policy, err := h.s.Get(id) if err != nil { http.NotFound(rw, req) } pkg.WriteJSON(rw, policy) }, )) }
func (h *Handler) Find(ctx context.Context, rw http.ResponseWriter, req *http.Request) { subject, ok := mux.Vars(req)["subject"] if !ok { http.Error(rw, "No id given.", http.StatusBadRequest) return } h.m.IsAuthorized(connectionsPermission, "get", middleware.Env(req).Owner(subject))(hydcon.ContextHandlerFunc( func(ctx context.Context, rw http.ResponseWriter, req *http.Request) { conns, err := h.s.FindAllByLocalSubject(subject) if err != nil { http.Error(rw, err.Error(), http.StatusNotFound) return } WriteJSON(rw, conns) }, )).ServeHTTPContext(ctx, rw, req) }
func (h *Handler) Get(ctx context.Context, rw http.ResponseWriter, req *http.Request) { id, ok := mux.Vars(req)["id"] if !ok { http.Error(rw, "No id given.", http.StatusBadRequest) return } h.m.IsAuthorized(permission(id), "get", nil)(hydcon.ContextHandlerFunc( func(ctx context.Context, rw http.ResponseWriter, req *http.Request) { client, err := h.s.GetClient(id) if err != nil { http.Error(rw, fmt.Sprintf("Could not retrieve client: %s", id), http.StatusNotFound) return } WriteJSON(rw, client) }, )).ServeHTTPContext(ctx, rw, req) }
func (h *Handler) Get(ctx context.Context, rw http.ResponseWriter, req *http.Request) { id, ok := mux.Vars(req)["id"] if !ok { http.Error(rw, "No id given.", http.StatusBadRequest) return } conn, err := h.s.Get(id) if err != nil { http.Error(rw, err.Error(), http.StatusNotFound) return } h.m.IsAuthorized(permission(id), "get", middleware.Env(req).Owner(conn.GetLocalSubject()))(hydcon.ContextHandlerFunc( func(ctx context.Context, rw http.ResponseWriter, req *http.Request) { WriteJSON(rw, conn) }, )).ServeHTTPContext(ctx, rw, req) }
func (h *Handler) Get(ctx context.Context, rw http.ResponseWriter, req *http.Request) { id, ok := mux.Vars(req)["id"] if !ok { http.Error(rw, "No id given.", http.StatusBadRequest) return } h.m.IsAuthorized(permission(id), "get", middleware.Env(req).Owner(id))(hydcon.ContextHandlerFunc( func(ctx context.Context, rw http.ResponseWriter, req *http.Request) { user, err := h.s.Get(id) if err == ErrNotFound { http.Error(rw, err.Error(), http.StatusNotFound) return } else if err != nil { http.Error(rw, err.Error(), http.StatusInternalServerError) return } WriteJSON(rw, user) }), ).ServeHTTPContext(ctx, rw, req) }