JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
Alternate solution for raising `JSONAPI::Exceptions::InvalidFieldValue` in `replace_fields`?
Nessuno ha ancora preso questa issue.
- Lingua principale
- Ruby
- Stelle
- 2.3k
- Fork
- 546
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
I'm currently using a callback before save to handle authorization.
module V1
class BaseResource < JSONAPI::Resource
# ...
set_callback :save, :before, :authorize
# ...
end
end
I verify that authorization has been performed on each action in the ApplicationController:
class ApplicationController < JSONAPI::ResourceController
# ...
after_action :verify_policy_authorized, except: [:index]
def verify_policy_authorized
raise PolicyAuthorizationNotPerformedError unless policy_authorized?
end
# ...
end
Unfortunately, if an invalid value is submitted for an enum attribute the before save callback never happens because a JSONAPI::Exceptions::InvalidFieldValue is raised in _replace_fields. This causes verify_policy_authorized to not be called which raises the PolicyAuthorizationNotPerformedError.
I could obviously hack in a fix, but I wondered if this was a sign that a more general approach would be better. For example, should we provide a hook into exceptions raised and rescued which would allow the user of jsonapi-resources to handle things like bypassing policy authorization?
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia tracciando il percorso di validazione dell'enum attraverso _replace_fields e JSONAPI::Exceptions::InvalidFieldValue, quindi esamina il callback di salvataggio in V1::BaseResource e verify_policy_authorized in ApplicationController. L'issue propone un hook generale per le eccezioni, ma non definisce il comportamento dell'hook né un test concreto di completamento.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- rails, ruby
- Ambito
- api, backend
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100