// Retrieve a collection of users that have the 'ADVISOR' // role. This will be passed into the view so users can select // a valid advisor when registering. $advisors = $app->user->whereHas('roles', function ($q) { $q->where('name', '=', 'ADVISOR'); })->get()->sortBy('last_name'); // Retrieve a collection of all roles $roles = Role::all()->toArray(); $app->render('admin/admin.edituser.html.twig', ['errors' => $v->errors(), 'request' => $request, 'user' => $user, 'roles' => $roles, 'advisors' => $advisors]); } } else { // No user id provided, so this is a new user // Validate everything and create user $v->validate(['email|Email' => [$email, 'required|email|max(30)|uniqueEmail'], 'firstname|First Name' => [$firstname, 'required|max(30)'], 'lastname|Last Name' => [$lastname, 'required|max(30)'], 'major|Major' => [$major, 'required|max(100)'], 'advisor|Advisor' => [$advisor, 'required'], 'password|Password' => [$password, 'required|min(6)'], 'password_confirm|Password Confirmation' => [$passwordConfirm, 'required|matches(password)']]); if ($v->passes()) { $user = User::create(['email' => $email, 'first_name' => $firstname, 'last_name' => $lastname, 'major' => $major, 'id_advisor' => $advisor, 'password' => $app->hash->password($password)]); // Remove any existing roles $user->roles()->detach(); // Add user roles if provided if (isset($roles) && count($roles)) { // Convert the array of strings from the roles post variable to an array of ints $rolesArray = []; for ($i = 0; $i < count($roles); $i++) { $rolesArray[$i] = intval($roles[$i]); } // Add the new roles $user->roles()->attach($rolesArray); } $app->flash('global', 'User Info Saved'); return $app->response->redirect($app->urlFor('admin.editUser', array('id' => $user->id_user))); } else {