Ich habe Benutzer in meiner App mit zwei verschiedenen Rollen, Student und Admin. Jeder Benutzer hat eine Feldreferenz team_id, die dem Benutzer mitteilt, zu welchem Team er gehört. In diesem Fall besteht mein db aus diesen Tabellen: Benutzer, Teams.Muss ich für jede Benutzerrolle separate APIs-Endpunkte schreiben?
und ein Team Details zu zeigen, habe ich eine API wie unten: GET: api/Teams/{team_id}
public function show($id)
{
$team = $this->teamService->findById($id);
if ($team) {
return response()->json(['message' => 'Success', 'success' => true, 'status' => 200, 'data' => $team]);
} else {
return response()->json(['message' => 'Error', 'success' => true, 'status' => 404, 'data' => null]);
}
}
Gut, das für den Admin ist nur so der $ id als Argument übergeben wird, in Die URL, das bedeutet, dass nur der Administrator jede $ ID eingeben kann, während der normale Benutzer die ID automatisch zuordnen muss, abhängig davon, welchem Team sie angehören (also in diesem Fall möchte ich die Teamdetails für das Team anzeigen, zu dem sie gehören).
so in diesem Fall meine api soll wie folgt aussehen: GET: api/Team
public function show()
{
$team = $this->teamService->findById(Auth->user->team_id); //associate the team id for user logged in
if ($team) {
return response()->json(['message' => 'Success', 'success' => true, 'status' => 200, 'data' => $team]);
} else {
return response()->json(['message' => 'Error', 'success' => true, 'status' => 404, 'data' => null]);
}
}
Also meine letzte Frage ist, gibt es eine Möglichkeit, dass ich dies in einem Ort für beiden Rollen setzen kann. Es gibt also keine doppelten Funktionen für verschiedene Rollen.
Wie sollte die API in diesem Fall aussehen?
Dank
Kannst du nicht einfach eine if-Anweisung verwenden? wenn 'if (Auth :: user() -> role == 'admin') {$ team = $ this-> teamService-> findById ($ id);} sonst {die andere query}' –
@AchrafKhouadja, war ich Ich denke auf die gleiche Weise, aber wenn es normaler Benutzer ist, warum muss ich eine $ ID auf der URL übergeben, ich meine die ID auf der URL scheint nutzlos, und sollte ich es immer Null übergeben, wenn es ein normaler Benutzer ist? –
dann können Sie eine Middlaware verwenden, überprüfen Sie, ob der Benutzer ein Admin ist, wenn ja -> Redirect zu einer Route beschränkt auf Admins mit der ID (auch mit Middleware) oder Redirect zu einer Route für einen normalen Benutzer, ohne die ID hinzufügen zu url –