slug)->first(); if (! $existing) { $role = Role::create([ 'name' => $request->name, 'slug' => $request->slug, ]); return $role; } return response(['error' => 1, 'message' => 'role already exists'], 409); } /** * Display the specified resource. * * @param \App\Models\Role $role * @return \Illuminate\Http\Response */ public function show(Role $role) { return $role; } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Models\Role $role * @return \Illuminate\Http\Response */ public function update(Request $request, Role $role = null) { if (! $role) { return response(['error' => 1, 'message' => 'role doesn\'t exist'], 404); } $role->name = $request->name ?? $role->name; if ($request->slug) { if ($role->slug != 'admin' && $role->slug != 'super-admin') { //don't allow changing the admin slug, because it will make the routes inaccessbile due to faile ability check $role->slug = $request->slug; } } $role->update(); return $role; } /** * Remove the specified resource from storage. * * @param \App\Models\Role $role * @return \Illuminate\Http\Response */ public function destroy(Role $role) { if ($role->slug != 'admin' && $role->slug != 'super-admin') { //don't allow changing the admin slug, because it will make the routes inaccessbile due to faile ability check $role->delete(); return response(['error' => 0, 'message' => 'role has been deleted']); } return response(['error' => 1, 'message' => 'you cannot delete this role'], 422); } }