/** * Store a newly created resource in storage. * * @return Response */ public function store(Request $request) { $group = new group(); $group->name = $request->input('name'); $group->body = $request->input('body'); $group->group_type = $request->input('group_type'); if ($request->get('address')) { $group->address = $request->input('address'); if (!$group->geocode()) { flash()->error(trans('messages.address_cannot_be_geocoded')); } else { flash()->info(trans('messages.ressource_geocoded_successfully')); } } if ($group->isInvalid()) { // Oops. return redirect()->action('GroupController@create')->withErrors($group->getErrors())->withInput(); } $group->save(); // handle cover if ($request->hasFile('cover')) { Storage::disk('local')->makeDirectory('groups/' . $group->id); Image::make($request->file('cover'))->widen(800)->save(storage_path() . '/app/groups/' . $group->id . '/cover.jpg'); Image::make($request->file('cover'))->fit(300, 200)->save(storage_path() . '/app/groups/' . $group->id . '/thumbnail.jpg'); } // make the current user a member of the group $membership = \App\Membership::firstOrNew(['user_id' => $request->user()->id, 'group_id' => $group->id]); $membership->notification_interval = 60 * 24; // default to daily interval $membership->membership = \App\Membership::MEMBER; $membership->save(); return redirect()->action('MembershipController@settings', [$group->id]); }
/** * Process the account creation from the form of inviteConfirm() */ public function inviteRegister(Request $request, Group $group, $token) { $this->validate($request, ['name' => 'required|max:255', 'email' => 'required|email|max:255|unique:users', 'password' => 'required|confirmed|min:6']); $invite = \App\Invite::whereToken($token)->firstOrFail(); $invite->claimed_at = Carbon::now(); $user = new \App\User(); $user->name = $request->get('name'); $user->email = $request->get('email'); $user->password = bcrypt($request->get('password')); // in the strange event the user changes the email on the registration form, we cannot consider it is verified using the invite. if ($invite->email == $request->get('email')) { $user->verified = 1; } $user->save(); $membership = \App\Membership::firstOrNew(['user_id' => $user->id, 'group_id' => $group->id]); $membership->membership = \App\Membership::MEMBER; $membership->save(); Auth::login($user); flash()->info(trans('messages.you_are_now_a_member_of_this_group')); return redirect()->action('GroupController@show', $group->id); }
/** * Store new settings from the settingsForm */ public function settings(Request $request, Group $group) { // load or create membership for this group and user combination $membership = \App\Membership::firstOrNew(['user_id' => $request->user()->id, 'group_id' => $group->id]); $membership->membership = \App\Membership::MEMBER; $membership->notification_interval = $this->intervalToMinutes($request->get('notifications')); $membership->save(); return redirect()->action('GroupController@show', [$group->id])->with('message', trans('membership.settings_updated')); }