/** * Update config via POST * * @param Request $request * @return Response */ public function store(Request $request) { if (Gate::denies('set-config')) { abort(403); } $config = Config::first(); $config->update($request->only('registration_enabled')); return response()->json($config); }
/** * Associate the specified member resource to the group tuple * * @param Request $request * @return Response */ public function store(Request $request, $groupId) { // Check config if registration is enabled if (!Config::first()->registration_enabled) { return response()->json(["msg" => "registrations are disabled"], 403); } $group = Group::findOrFail($groupId); if (Gate::denies('attach-member', $group)) { abort(403); } $this->validate($request, ['email' => 'required|unique:members,email|email|max:255', 'password' => 'required|confirmed|min:6', 'first_name' => 'required|max:255', 'last_name' => 'required|max:255', 'birthdate' => 'required|date', 'sex' => 'required|in:m,f']); $member = new Member($request->all()); $member->password = Hash::make($request->input('password')); $group->members()->save($member); try { return response()->json("ok"); } catch (\Illuminate\Database\QueryException $e) { return response()->json("error"); } }
/** * Store a newly created resource in storage. * * @param Request $request * @return Response */ public function store(Request $request) { $cfg = Config::first(); // Check config if registration is enabled if (!$cfg->registration_enabled) { return response()->json(["msg" => "registrations are disabled"], 403); } $v = Validator::make($request->all(), ['name' => 'required|max:255|unique:groups', 'members' => 'required|array']); for ($n = 0; $n < count($request->members); $n++) { $v->sometimes("members.{$n}.email", 'required|email|max:255', function ($input) use($n) { return count($input->members >= $n); }); $v->sometimes("members.{$n}.password", 'required|confirmed|min:6', function ($input) use($n) { return count($input->members >= $n); }); $v->sometimes("members.{$n}.first_name", 'required|max:255', function ($input) use($n) { return count($input->members >= $n); }); $v->sometimes("members.{$n}.last_name", 'required|max:255', function ($input) use($n) { return count($input->members >= $n); }); $v->sometimes("members.{$n}.birthdate", 'required|date', function ($input) use($n) { return count($input->members >= $n); }); $v->sometimes("members.{$n}.sex", 'required|in:m,f', function ($input) use($n) { return count($input->members >= $n); }); $v->sometimes("members.{$n}.country", 'required', function ($input) use($n) { return count($input->members >= $n); }); //$v->sometimes("members.$n.cv", 'required|mimes:pdf', function($input) use($n) { return count($input->members >= $n); }); } $v->after(function ($validator) use($request) { if (count($request->members) < 1 || count($request->members) > 3) { $validator->errors()->add('members', 'Only 1-3 members are accepted'); } }); if ($v->fails()) { return response()->json($v->errors(), 400); } // validate all members have correct auth or do not exist yet foreach ($request->members as $m) { $qm = Member::where('email', $m['email']); if ($qm->exists()) { // Check password if (!Auth::once(['email' => $m['email'], 'password' => $m['password']])) { return response()->json(["msg" => "User already exists, and password is incorrect", "offender" => $m['email']], 400); } } } $group = new Group($request->only('name')); $group->save(); // create or register to the group all the members foreach ($request->members as $m) { $qm = Member::where('email', $m['email']); if (!$qm->exists()) { $qm = new Member($m); $qm->password = Hash::make($m['password']); $group->members()->save($qm); // Handle cv PDF //if ($m['cv']->isValid()) { // $m['cv']->move(storage_path('app/cvs'), $qm->id.'.pdf'); //} } } Mail::send('emails.admin.groupCreated', ['group' => $group], function ($m) use($group, $cfg) { $m->from('*****@*****.**', 'EESTEC Android Competition'); $m->to($cfg->admin_email, 'ECA Admin')->subject('New group registered!'); }); return response()->json($group); }