Exemplo n.º 1
0
 public function post()
 {
     $f3 = \Base::instance();
     //        $f3->reroute('/beta');
     // Exit immediately if public registrations are disabled
     if (!DbConfig::getOpt('openRegister')) {
         $f3->error(400);
         return;
     }
     if ($f3->get('POST.register-password') != $f3->get('POST.register-password-verify')) {
         $f3->set('errors', ['Password verify must match the first password.']);
     } else {
         $user = User::createUser(array('name' => $f3->get("POST.register-name"), 'username' => $f3->get("POST.register-username"), 'email' => $f3->get("POST.register-email"), 'password' => $f3->get("POST.register-password")));
         // Data missing
         if ($user == false) {
             $f3->set('errors', ['Some information has not been entered correctly or is not long enough.']);
         } elseif (is_array($user)) {
             $f3->set('errors', $user);
         } else {
             $f3->set('SESSION.id', $user->id);
             $f3->set('tplData', ['name' => $f3->get("POST.register-username")]);
             SendingAPI::send(['mailTo' => $f3->get("POST.register-email"), 'mailSubject' => 'Thank you for registering on SquareMS !', 'mailContents' => ['html' => \Template::instance()->render('mails/register.html'), 'text' => "Thank you for registering on SquareMS ! \n" . "You can access your account now on https://squarems.net/ ! \n\n" . "Please do not respond to this email, it is sent by an automated system."]]);
             $f3->reroute("/dashboard");
             return;
         }
     }
     $f3->set('css', array('/static/css/auth.css'));
     $f3->set('target', 'auth/register.html');
     $this->_render('base.html');
 }
Exemplo n.º 2
0
 public function viewpost()
 {
     $f3 = \Base::instance();
     $this->_requireLogin();
     $user = $f3->get('user');
     $user_obj = $f3->get('user_obj');
     $user_org_links = $f3->get('user_org_links');
     $db = $f3->get('db.instance');
     $ticketId = $f3->get('PARAMS.id');
     $ticket = new Ticket();
     $ticket->load($ticketId);
     if ($ticket->loaded() and $ticket->memberId == $user['id']) {
         $text = $f3->get('POST.text');
         $text = $f3->clean($text);
         if (strlen($text) > 10) {
             // Add response and redirect
             $ticketmsg = new TicketMessage();
             $ticketmsg->ticketId = $ticket->id;
             $ticketmsg->text = $text;
             $ticketmsg->senderId = $user['id'];
             $ticketmsg->sendTime = date("Y-m-d H:i:s");
             $ticketmsg->save();
             // Set ticket to active if closed
             if ($ticket->status == 'closed') {
                 $ticket->status = 'active';
                 $ticket->save();
             }
             // Sending a mail to admins
             $admins = \Helpers\User::getUsersRankedHigherThen(1);
             $adminEmails = [];
             foreach ($admins as $admin) {
                 $adminEmails[] = $admin['email'];
             }
             $f3->set('ticket_id', $ticket->id);
             $f3->set('ticket_text', $text);
             $f3->set('ticket_priority', $ticket->priority);
             SendingAPI::send(['mailTo' => $adminEmails, 'mailSubject' => 'An answer has been made to a ticket', 'mailContents' => ['html' => \Template::instance()->render('mails/ticketAnswer.html'), 'text' => "An answer has been made to a ticket. \n\n" . "From: " . $user['name'] . "\n" . "Priority: " . $ticket->priority . "\n" . "URL: " . 'https://squarems.net/dashboard/admin/support/ticket/' . $ticket->id . "\n\n" . $text . "\n\n" . "You can unsubscribe in your user settings: 'Notifications'."]]);
             $f3->reroute($f3->get('PATH'));
         } else {
             new Notification('Text must be at least 10 characters long.', 'danger', true);
             $f3->reroute($f3->get('PATH') . '?content=' . urlencode($text));
         }
     } else {
         $f3->set('target', 'support/unauthorized.html');
     }
 }
Exemplo n.º 3
0
 public function claimpost()
 {
     $f3 = \Base::instance();
     if ($f3->get('user')) {
         if ($f3->get('user')['rank'] == 1) {
             new Notification('You cannot claim an invite while logged in.', 'danger', true);
             $f3->reroute('/dashboard');
             return;
         }
     }
     $key = $f3->get('PARAMS.invite');
     if (\Helpers\Invites::isValidKey($key)) {
         if ($f3->get('POST.register-password') != $f3->get('POST.register-password-verify')) {
             $f3->set('errors', ['Password verify must match the first password.']);
         } else {
             $user = User::createUser(array('name' => $f3->get("POST.register-name"), 'username' => $f3->get("POST.register-username"), 'email' => $f3->get("POST.register-email"), 'password' => $f3->get("POST.register-password")));
             // Data missing
             if ($user == false) {
                 $f3->set('errors', ['Some information has not been entered correctly or is not long enough.']);
             } elseif (is_array($user)) {
                 $f3->set('errors', $user);
             } else {
                 $f3->set('SESSION.id', $user->id);
                 // Delete the key
                 \Helpers\Invites::deleteInvite($key);
                 // Send a mail
                 $f3->set('tplData', ['name' => $f3->get("POST.register-username")]);
                 SendingAPI::send(['mailTo' => $f3->get("POST.register-email"), 'mailSubject' => 'Thank you for registering on SquareMS !', 'mailContents' => ['html' => \Template::instance()->render('mails/register.html'), 'text' => "Thank you for registering on SquareMS ! \n" . "You can access your account now on https://squarems.net/ ! \n\n" . "Please do not respond to this email, it is sent by an automated system."]]);
                 $f3->reroute("/dashboard");
                 return;
             }
         }
         $f3->set('css', array('/static/css/auth.css'));
         $f3->set('target', 'invite.html');
         $this->_render('base.html');
     } else {
         $f3->error(404);
     }
 }
Exemplo n.º 4
0
 public function details()
 {
     $f3 = \Base::instance();
     $this->_requireLogin();
     $this->_requireRank('support');
     $user = $f3->get('user');
     $user_obj = $f3->get('user_obj');
     $user_org_links = $f3->get('user_org_links');
     $db = $f3->get('db.instance');
     // Target user
     $tuser_id = $f3->get('PARAMS.id');
     $tuser = new User();
     $tuser->load($tuser_id);
     $f3->set('tuser', $tuser->cast());
     if ($f3->get('GET.action') == 'resetpassword') {
         if ($tuser->rank > $user['rank']) {
             new Notification("You cannot reset this user's password (he's higher ranked then you)", 'danger', true);
             $f3->reroute($f3->get('PATH'));
         } else {
             $security = Security::instance();
             $randpswd = $security->salt();
             extract($security->hash($randpswd));
             $tuser->password = $hash;
             $tuser->salt = $salt;
             $tuser->save();
             new Notification("The user's password has been reset, his new password is <b>{$randpswd}</b>", 'danger', true);
             SendingAPI::send(['from' => '*****@*****.**', 'to' => $tuser->email, 'subject' => 'Password reset', 'content' => "Hello, your password has been reset, here is your new one: <b>{$randpswd}</b>. Don't forget to change it !"]);
             $f3->reroute($f3->get('PATH'));
         }
     }
     // If the target user is a higher level user, you are not allowed to change his info
     if ($tuser->rank > $user['rank']) {
         new Notification("This user is higher ranked then you, you can't change his information.", 'danger', true);
     }
     $f3->set('target', 'dashboard/admin/users/details.html');
     $this->_render('base.html');
 }
Exemplo n.º 5
0
 public function createpost()
 {
     $f3 = \Base::instance();
     $this->_requireLogin();
     $user = $f3->get('user');
     $user_obj = $f3->get('user_obj');
     $user_org_links = $f3->get('user_org_links');
     $db = $f3->get('db.instance');
     $name = $f3->get('POST.name');
     $priority = $f3->get('POST.priority');
     $text = $f3->get('POST.content');
     $errors = [];
     if (!empty($name)) {
         $name = $f3->clean($name);
         if (strlen($name) < 7) {
             $errors[] = 'Ticket name must be at least 8 characters long';
         }
     } else {
         $errors[] = 'Ticket name cannot be empty';
     }
     $priority = (int) $priority;
     if ($priority > 4 or $priority < 1) {
         $errors[] = 'Priority is 4 max, 1 min.';
     }
     if (!empty($text)) {
         $text = $f3->clean($text);
         if (strlen($text) < 30) {
             $errors[] = 'Ticket content must be at least 30 characters long.';
         }
     } else {
         $errors[] = 'Ticket text cannot be empty';
     }
     if (empty($errors)) {
         // No errors, create ticket
         // Ticket
         $ticket = new Ticket();
         $ticket->memberId = $user['id'];
         $ticket->status = 'active';
         $ticket->statusColor = 'red';
         $ticket->assignedUserId = 0;
         $ticket->title = $name;
         $ticket->create_time = date("Y-m-d H:i:s");
         $ticket->priority = $priority;
         $ticket->save();
         // First ticket message
         $ticketmsg = new TicketMessage();
         $ticketmsg->ticketId = $ticket->id;
         $ticketmsg->text = $text;
         $ticketmsg->senderId = $user['id'];
         $ticketmsg->sendTime = date("Y-m-d H:i:s");
         $ticketmsg->save();
         // Sending a mail to admins
         $admins = User::getUsersRankedHigherThen(1);
         $adminEmails = [];
         foreach ($admins as $admin) {
             $adminEmails[] = $admin['email'];
         }
         $f3->set('ticket_id', $ticket->id);
         $f3->set('ticket_text', $text);
         $f3->set('ticket_priority', $priority);
         SendingAPI::send(['mailTo' => $adminEmails, 'mailSubject' => 'New support ticket opened', 'mailContents' => ['html' => \Template::instance()->render('mails/newTicket.html'), 'text' => "A new ticket has just been opened. \n\n" . "From: " . $user['name'] . "\n" . "Priority: " . $priority . "\n" . "URL: " . 'https://squarems.net/dashboard/admin/support/ticket/' . $ticket->id . "\n\n" . $text . "\n\n" . "You can unsubscribe in your user settings: 'Notifications'."]]);
         // Redirect to ticket
         $f3->reroute('/support/ticket/' . $ticket->id);
     } else {
         // Show him his errors
         $f3->set('errors', $errors);
     }
     $f3->set('target', 'support/new.html');
     $this->_render('base.html');
 }