Example #1
0
 /**
  *  Function instance the acl of a particular profile
  *
  * @access	public
  * @param   integer     $profile
  * @return	\Zend\Permissions\Acl\Acl
  */
 public static function getProfileAcl($profile)
 {
     $acl = new AclLibrary();
     // get all resources in application
     $resources = Resource::all();
     // get all permissions fron this profile
     $permissions = Permission::getRecord($profile);
     // set profile id
     $acl->addRole(new Role($profile));
     // add resources to acl element
     foreach ($resources as $resource) {
         $acl->addResource(new AclResource($resource->id_007));
     }
     // add resources to acl element
     foreach ($permissions as $permission) {
         $acl->allow($profile, $permission->resource_id_009, $permission->action_id_009);
     }
     return $acl;
 }
Example #2
0
 public function jsonData()
 {
     // get parameters from url route
     $parameters = $this->request->route()->parameters();
     $actionsAcl = Action::get();
     $acl = AclLibrary::getProfileAcl($parameters['profile']);
     $parameters = Miscellaneous::dataTablePaginate($this->request, $parameters);
     $parameters = Miscellaneous::dataTableSorting($this->request, $parameters, $this->indexColumns);
     $parameters = Miscellaneous::dataTableFiltering($this->request, $parameters);
     // set columns in parameters array
     $parameters['indexColumns'] = $this->indexColumns;
     $parametersCount = $parameters;
     $parametersCount['count'] = true;
     // get data to table
     $objects = call_user_func($this->model . '::getIndexRecords', $this->request, $parameters);
     $iFilteredTotal = call_user_func($this->model . '::getIndexRecords', $this->request, $parametersCount);
     $iTotal = call_user_func($this->model . '::countRecords', $this->request, $parameters);
     // get properties of model class
     $class = new \ReflectionClass($this->model);
     $response = ["sEcho" => intval($this->request->input('sEcho')), "iTotalRecords" => $iTotal, "iTotalDisplayRecords" => $iFilteredTotal, "aaData" => []];
     // instance model to get primary key
     $instance = new $this->model();
     $aObjects = $objects->toArray();
     $i = 0;
     foreach ($aObjects as $aObject) {
         $row = [];
         foreach ($this->indexColumns as $indexColumn) {
             $row[] = $aObject[$indexColumn];
         }
         $actions = '<div><select id="re' . $aObject[$instance->getKeyName()] . '" data-resource="' . $aObject[$instance->getKeyName()] . '" data-nresource="' . $aObject['name_007'] . '" multiple style="width: 100%;">';
         foreach ($actionsAcl as $actionAcl) {
             $selected = $acl->allows($aObject['id_007'], $actionAcl->id_008, $parameters['profile']) ? ' selected' : null;
             $actions .= '<option value="' . $actionAcl->id_008 . '"' . $selected . '>' . $actionAcl->name_008 . '</option>';
         }
         $actions .= '</select></div>';
         $row[] = $actions;
         $response['aaData'][] = $row;
         $i++;
     }
     return response()->json($response);
 }
Example #3
0
 public function setAllPermissions()
 {
     // get parameters from url route
     $parameters = $this->request->route()->parameters();
     $profile = Profile::find($parameters['id']);
     $resources = Resource::all();
     $actions = Action::all();
     $permissions = [];
     foreach ($resources as $resource) {
         foreach ($actions as $action) {
             $permissions[] = ['profile_id_009' => $parameters['id'], 'resource_id_009' => $resource->id_007, 'action_id_009' => $action->id_008];
         }
     }
     Permission::deleteRecordsProfile($parameters['id']);
     Permission::insert($permissions);
     // if profile it's same that our profile, overwrite ours permissions
     if ($profile->id_006 == auth('pulsar')->user()->profile_id_010) {
         session(['userAcl' => AclLibrary::getProfileAcl(auth('pulsar')->user()->profile_id_010)]);
     }
     return redirect()->route($this->routeSuffix, $parameters)->with(['msg' => 1, 'txtMsg' => trans('pulsar::pulsar.message_create_all_permissions', ['profile' => $profile->name_006])]);
 }
Example #4
0
 /**
  * Handle a login request to the application.
  *
  * @param  \Illuminate\Http\Request  $request
  * @return \Illuminate\Http\Response
  */
 public function postLogin(Request $request)
 {
     $this->validate($request, ['user' => 'required', 'password' => 'required']);
     $credentials = $request->only('user', 'password');
     if (auth('pulsar')->attempt($credentials, $request->has('remember'))) {
         // check if user has access
         if (!auth('pulsar')->user()->access_010) {
             auth('pulsar')->logout();
             return redirect($this->loginPath)->withInput($request->only('user', 'remember'))->withErrors(['loginErrors' => 3]);
         }
         // set user access control list
         session(['userAcl' => AclLibrary::getProfileAcl(auth('pulsar')->user()->profile_id_010)]);
         // check if user has permission to access
         if (!is_allowed('pulsar', 'access')) {
             auth('pulsar')->logout();
             return redirect($this->loginPath)->withInput($request->only('user', 'remember'))->withErrors(['loginErrors' => 2]);
         }
         session(['packages' => Package::getRecords(['active_012' => true, 'orderBy' => ['column' => 'sorting_012', 'order' => 'desc']])]);
         session(['baseLang' => Lang::getBaseLang()]);
         return redirect()->intended($this->redirectTo);
     }
     return redirect($this->loginPath)->withInput($request->only('user', 'remember'))->withErrors(['loginErrors' => 1]);
 }
Example #5
0
 public function storeCustomRecord($parameters)
 {
     $record = Record::find($this->request->input('ref'));
     $record->data_403 = json_decode($record->data_403);
     $form = $record->getForm;
     $state = $record->getState;
     $names = [];
     $usersEmails = [];
     $messages = [];
     $comment = Comment::create(['record_id_404' => $this->request->input('ref'), 'user_id_404' => auth('pulsar')->user()->id_010, 'date_404' => date('U'), 'subject_404' => $this->request->input('subject'), 'comment_404' => $this->request->input('comment')]);
     // check new recipients
     Miscellaneous::checkRecipients($record, $form);
     // get recipient emails to compare with new user email
     $recipients = Recipient::where('record_id_406', $this->request->input('ref'))->where('comments_406', true)->get();
     // set recipients
     foreach ($recipients as $recipient) {
         if ($recipient->email_406 != auth('pulsar')->user()->email_010) {
             $names[] = $recipient->name_406;
             $usersEmails[] = $recipient->email_406;
         }
     }
     // get users with the emails recipients
     $users = User::whereIn('email_010', $usersEmails)->get();
     $matchAuthor = false;
     foreach ($recipients as $recipient) {
         if ($recipient->email_406 == auth('pulsar')->user()->email_010) {
             $matchAuthor = true;
         } else {
             // send to all recipients less Author recipient
             // get user and permissions
             $matchUser = null;
             foreach ($users as $user) {
                 if ($user->email_010 == $recipient->email_406) {
                     $matchUser = $user;
                     break;
                 }
             }
             if ($matchUser != null) {
                 $userAcl = AclLibrary::getProfileAcl($matchUser->profile_id_010);
             }
             $messages[] = ['type_id_405' => 'comment', 'record_id_405' => $record->id_403, 'date_405' => date('U'), 'recipient_id_405' => $recipient->id_406, 'forward_405' => $recipient->forward_406, 'subject_405' => 'forms::pulsar.subject_comment', 'name_405' => $recipient->name_406, 'email_405' => $recipient->email_406, 'form_id_405' => $form->id_401, 'user_id_405' => $matchUser == null ? null : $matchUser->id_010, 'template_405' => 'forms::emails.comment', 'text_template_405' => 'forms::emails.text_comment', 'data_message_405' => json_encode(['name_form_405' => $form->name_401, 'author_comment_405' => auth('pulsar')->user()->name_010 . ' ' . auth('pulsar')->user()->surname_010, 'date_comment_405' => date(config('pulsar.datePattern')), 'subject_comment_405' => $comment->subject_404, 'comment_405' => $comment->comment_404, 'name_state_405' => $state->name_400, 'color_state_405' => $state->color_400, 'names_405' => implode(", ", $names), 'permission_state_405' => $matchUser == null ? false : $userAcl->allows('forms-record', 'edit', $matchUser->profile_id_010), 'permission_comment_405' => $matchUser == null ? false : $userAcl->allows('forms-comment', 'create', $matchUser->profile_id_010), 'permission_forward_405' => $matchUser == null ? false : $userAcl->allows('forms-form', 'edit', $matchUser->profile_id_010), 'permission_record_405' => $matchUser == null ? false : $userAcl->allows('forms-record', 'show', $matchUser->profile_id_010)]), 'data_405' => json_encode($record->toArray())];
         }
     }
     if (!$matchAuthor) {
         // Include Author to recipients but not forward
         Recipient::create(['record_id_406' => $record->id_403, 'forward_406' => false, 'name_406' => auth('pulsar')->user()->name_010 . ' ' . auth('pulsar')->user()->surname_010, 'email_406' => auth('pulsar')->user()->email_010, 'comments_406' => true, 'states_406' => true]);
     }
     if (count($messages) > 0) {
         Message::insert($messages);
     }
     $parameters['redirectParentJs'] = true;
     return $parameters;
 }
Example #6
0
 /**
  *  Function to record a data form
  *
  * @access	public
  * @return  json | \Illuminate\Http\RedirectResponse
  */
 public function recordForm()
 {
     $fields = json_decode($this->request->input('_fields'));
     $form = Form::find(Crypt::decrypt($this->request->input('_tokenForm')));
     $forwards = $form->getForwards;
     $recipients = [];
     $names = [];
     $messages = [];
     $recordDate = date('U');
     // test that, there are any form
     if ($form == null) {
         $response = ['success' => false, 'message' => "Form don't exist"];
         return response()->json($response);
     }
     $data = [];
     foreach ($fields->data as $field) {
         $obj = ['type' => $field->type, 'name' => $field->name, 'value' => $this->request->input($field->name)];
         if (isset($field->length)) {
             $obj['length'] = $field->length;
         }
         if (isset($field->label)) {
             $obj['label'] = $field->label;
         }
         $data[] = $obj;
     }
     $defaultState = Preference::getValue('formsDefaultState', 4);
     $dataRecord = ['form_id_403' => $form->id_401, 'date_403' => $recordDate, 'date_text_403' => date(config('pulsar.datePattern'), $recordDate), 'state_id_403' => $defaultState->value_018, 'subject_403' => $this->request->input($fields->subject, null), 'name_403' => $this->request->input($fields->name, null), 'surname_403' => $this->request->input($fields->surname, null), 'company_403' => $this->request->input($fields->company, null), 'email_403' => $this->request->input($fields->email, null), 'data_403' => json_encode($data)];
     $record = Record::create($dataRecord);
     $state = $record->getState;
     // set data with array with decode information to make $dataRecord for message
     $dataRecord['data_403'] = $data;
     // set ID record
     $dataRecord['id_403'] = $record->id_403;
     // set records unopened
     $form->n_unopened_401 = Record::where('form_id_403', $form->id_401)->where('opened_403', false)->count();
     $form->save();
     foreach ($forwards as $forward) {
         // set recipients from forwards to sow in the email message
         $names[] = $forward->name_402;
         $recipients[] = ['record_id_406' => $record->id_403, 'forward_406' => true, 'name_406' => $forward->name_402, 'email_406' => $forward->email_402, 'comments_406' => $forward->comments_402, 'states_406' => $forward->states_402];
     }
     if (count($recipients) > 0) {
         Recipient::insert($recipients);
     }
     // get recipient emails to compare with new user email
     $recipients = $record->getRecipients;
     foreach ($recipients as $recipient) {
         // get user and permissions
         $user = User::where('email_010', $recipient->email_406)->first();
         if ($user != null) {
             $userAcl = AclLibrary::getProfileAcl($user->profile_id_010);
         }
         $messages[] = ['type_id_405' => 'record', 'record_id_405' => $record->id_403, 'date_405' => date('U'), 'recipient_id_405' => $recipient->id_406, 'forward_405' => true, 'subject_405' => 'forms::pulsar.subject_email_record', 'name_405' => $recipient->name_406, 'email_405' => $recipient->email_406, 'form_id_405' => $form->id_401, 'user_id_405' => $user == null ? null : $user->id_010, 'template_405' => 'forms::emails.record', 'text_template_405' => 'forms::emails.text_record', 'data_message_405' => json_encode(['name_form_405' => $form->name_401, 'name_state_405' => $state->name_400, 'color_state_405' => $state->color_400, 'names_405' => implode(", ", $names), 'permission_state_405' => $user == null ? false : $userAcl->allows('forms-record', 'edit', $user->profile_id_010), 'permission_comment_405' => $user == null ? false : $userAcl->allows('forms-comment', 'create', $user->profile_id_010), 'permission_forward_405' => $user == null ? false : $userAcl->allows('forms-form', 'edit', $user->profile_id_010), 'permission_record_405' => $user == null ? false : $userAcl->allows('forms-record', 'show', $user->profile_id_010)]), 'data_405' => json_encode($dataRecord)];
     }
     if (count($messages) > 0) {
         Message::insert($messages);
     }
     if ($this->request->input('_redirectOk') == '') {
         $response = ['success' => true, 'form' => ['date_403' => $recordDate, 'date_text_403' => date(config('pulsar.datePattern'), $recordDate), 'subject_403' => $this->request->input($fields->subject, null), 'state_id_403' => $defaultState->value_018, 'name_403' => $this->request->input($fields->name, null), 'surname_403' => $this->request->input($fields->surname, null), 'company_403' => $this->request->input($fields->company, null), 'email_403' => $this->request->input($fields->email, null), 'data_403' => json_encode($data)]];
         return response()->json($response);
     } else {
         return redirect($this->request->input('_redirectOk'));
     }
 }