public function update($id)
{
if (!($this->user->hasAccess('users.edit') || Sentry::getUser()->id == $id)) {
App::abort('401');
}
try {
if (current_user()->id != $id) {
$redirect_to = $this->link_type . '/users';
} else {
// Redirect users without user editing privilege to their profile
$redirect_to = $this->link_type . '/profile';
}
$input = Input::all();
$validator = User::validate_change($input, $id);
if ($validator->passes()) {
// Update the current user
$this->user_manager->updateUser($id, $input);
if (isset($input['status'])) {
// Don not change the user status during profile update
if ($input['status'] == 1) {
$this->user_manager->activateUser($id);
} else {
$this->user_manager->deactivateUser($id);
}
}
return Redirect::to($redirect_to)->with('success_message', trans('success_messages.user_update', ['username' => $input['username']]));
} else {
// Form validation failed
return Redirect::back()->withInput()->withErrors($validator);
}
} catch (Exception $e) {
return Redirect::to($redirect_to)->with('error_message', trans('error_messages.user_update', ['username' => $input['username']]) . $e->getMessage());
}
}