/** * populate the user_data * * @param type $param * @return void */ static function hydrate() { $user_id = Auth::user()->id; $user = User::find($user_id); $group_names = $user->groups->lists('name'); $primary_group = current($group_names); $app_groups = StationConfig::app('user_groups'); $starting_panel = $app_groups[$primary_group]['starting_panel']; $starting_panel_uri = Panel::config_to_uri($starting_panel); Laravel_Session::put('user_data', array('id' => $user_id, 'groups' => $group_names, 'primary_group' => $primary_group, 'starting_panel' => $starting_panel, 'starting_panel_uri' => $starting_panel_uri, 'name' => $user['first_name'] . ' ' . $user['last_name'], 'email' => $user['email'], 'username' => $user['username'], 'gravatar_hash' => md5($user['email']))); }
/** * this is just a stub for post-login redirects. * make sure we hydrate the user's session with fresh new user data before passing them on. */ public function bootstrap() { if (Auth::guest()) { return Redirect::to($this->base_uri . 'login'); } Session_Filter::hydrate(); if (Session::has('desired_uri')) { $desired_uri = Session::get('desired_uri'); Session::forget('desired_uri'); return Redirect::to($desired_uri); } $panel_uri = Session::get('user_data.starting_panel_uri'); return Redirect::to($panel_uri); }
public function do_create($panel_name) { $panel = new Panel(); $user_scope = $panel->user_scope($panel_name, 'C', $this->subpanel_parent); // can we create? which fields? if (!$user_scope) { return Redirect::back()->with('error', 'You do not have access to that area.'); } $this->init($panel_name, 'C'); $override_response = $this->override_responded_to($user_scope, 'C'); if ($override_response) { return $override_response; } $validator = $panel->validates_against($panel_name, $user_scope); $attempt_uri = isset($this->is_creating_user) ? '/' . $this->base_uri . 'register/' : '/' . $this->base_uri . 'panel/' . $panel_name . '/create'; $attempt_uri = $attempt_uri . $this->append_attempt_uri; if ($validator->fails()) { // flash error and redirect to form if (Request::ajax()) { $errors = array('ajax_errors' => $validator->getMessageBag()->toArray()); $error_flash = View::make('station::layouts.header', $errors)->render(); return Response::json(['status' => 0, 'flash' => $error_flash]); } else { return Redirect::to($attempt_uri)->withErrors($validator)->withInput(); } } else { // save and redirect // Is there a pre_trigger? if (isset($this->panel_config['panel_options']['trigger']['pre']['C'])) { $temp = explode('@', $this->panel_config['panel_options']['trigger']['pre']['C']); $override_controller = $temp[0]; $override_method = $temp[1]; App::make($override_controller)->{$override_method}(Input::all()); } $record_id = $panel->create_record_for($panel_name, $user_scope, isset($this->is_creating_user), $this->write_data_override); if (is_numeric($record_id)) { // record was saved // Is there a post_trigger? if (isset($this->panel_config['panel_options']['trigger']['post']['C'])) { $temp = explode('@', $this->panel_config['panel_options']['trigger']['post']['C']); $override_controller = $temp[0]; $override_method = $temp[1]; App::make($override_controller)->{$override_method}($record_id); } if (Request::ajax()) { return Response::json(['status' => 1, 'record_id' => $record_id]); } else { if (isset($this->is_creating_user)) { // this is a new account. find out where they should go first, log them in and redirect Auth::loginUsingId($record_id); Station_Session::hydrate(); $uri = Session::get('user_data.starting_panel_uri'); $message = 'Your account has been added and you are logged in!'; } else { // just creating a new record in general $user_wants_to_create_another = Input::get('after_save') == 'create'; $append = $this->subpanel_parent_uri != '' ? $this->subpanel_parent_uri : '/' . $panel_name; $uri = '/' . $this->base_uri . 'panel' . $append; $uri = $user_wants_to_create_another ? $attempt_uri : $uri; $message = 'Your new ' . strtolower($this->single_item_name) . ' has been added. '; $message .= $user_wants_to_create_another ? 'Create a another below.' : ''; } return Redirect::to($uri)->with('success', $message); } } return Redirect::to($attempt_uri)->with('error', 'Something went wrong with saving :('); // TODO: log this. } }