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'); }
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'); } }
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); } }
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'); }
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'); }