From 273aaa9840a48a8a0eb5748a346b06024a6fbc80 Mon Sep 17 00:00:00 2001 From: Bubka <858858+Bubka@users.noreply.github.com> Date: Sun, 25 Oct 2020 23:50:13 +0100 Subject: [PATCH] Add Group model & controller --- app/Group.php | 49 ++++++++ app/Http/Controllers/GroupController.php | 137 +++++++++++++++++++++++ 2 files changed, 186 insertions(+) create mode 100644 app/Group.php create mode 100644 app/Http/Controllers/GroupController.php diff --git a/app/Group.php b/app/Group.php new file mode 100644 index 00000000..80455209 --- /dev/null +++ b/app/Group.php @@ -0,0 +1,49 @@ +hasMany('App\TwoFAccount'); + } + + + + /** + * Get the group + * + * @return integer + */ + public function getIsActiveAttribute() + { + $activeGroupId = intval(Options::get('activeGroup')); + + return $this->id === $activeGroupId ? true : false; + } + +} diff --git a/app/Http/Controllers/GroupController.php b/app/Http/Controllers/GroupController.php new file mode 100644 index 00000000..5200fbea --- /dev/null +++ b/app/Http/Controllers/GroupController.php @@ -0,0 +1,137 @@ +get(); + + // Create the pseudo group + $allGroup = new Group([ + 'name' => __('commons.all') + ]); + + $allGroup->id = 0; + $allGroup->twofaccounts_count = TwoFAccount::count(); + + // Merge them all + $groups->prepend($allGroup); + + return response()->json($groups->toArray()); + } + + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + + $this->validate($request, [ + 'name' => 'required|string|max:32|unique:groups', + ]); + + $group = Group::create([ + 'name' => $request->name, + ]); + + return response()->json($group, 201); + } + + + /** + * Display the specified resource. + * + * @param \App\Group $group + * @return \Illuminate\Http\Response + */ + public function show(Group $group) + { + return response()->json($group, 200); + } + + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Group $twofaccount + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + + $this->validate($request, [ + 'name' => 'required|string|max:32|unique:groups', + ]); + + // Here we catch a possible missing model exception in order to + // delete orphan submited icon + try { + + $group = Group::FindOrFail($id); + + } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) { + + throw $e; + } + + $group->update([ + 'name' => $request->name, + ]); + + return response()->json($group, 200); + + } + + + /** + * Associate the specified accounts with the group + * + * @param \App\Group $group + * @return \Illuminate\Http\Response + */ + public function associateAccounts(Request $request) + { + + $twofaccounts = TwoFAccount::find($request->input('accountsIds')); + $group = Group::FindOrFail($request->input('groupId')); + + $group->twofaccounts()->saveMany($twofaccounts); + + return response()->json($group, 200); + } + + + /** + * Remove the specified resource from storage. + * + * @param \App\Group $group + * @return \Illuminate\Http\Response + */ + public function destroy(Group $group) + { + $group->delete(); + + return response()->json(null, 204); + } + +}