mirror of
https://github.com/typemill/typemill.git
synced 2025-07-31 11:20:15 +02:00
Fix setup controller
This commit is contained in:
@@ -23,7 +23,7 @@ class ControllerApiSystemUsers extends Controller
|
||||
{
|
||||
foreach($usernames as $username)
|
||||
{
|
||||
if($validate->username(['username' => $username]))
|
||||
if($validate->username(['username' => $username]) === true)
|
||||
{
|
||||
$existinguser = $user->setUser($username);
|
||||
if($existinguser)
|
||||
@@ -51,7 +51,7 @@ class ControllerApiSystemUsers extends Controller
|
||||
$validate = new Validation();
|
||||
$valresult = $validate->emailsearch(['email' => $email]);
|
||||
|
||||
if($valresult)
|
||||
if($valresult === true)
|
||||
{
|
||||
$usernames = $user->findUsersByEmail($email);
|
||||
|
||||
|
@@ -34,7 +34,7 @@ class ControllerWebAuth extends Controller
|
||||
$validation = new Validation();
|
||||
# $settings = $this->c->get('settings');
|
||||
|
||||
if($validation->signin($input))
|
||||
if($validation->signin($input) === true)
|
||||
{
|
||||
$user = new User();
|
||||
|
||||
|
@@ -232,7 +232,7 @@ class ControllerWebRecover extends Controller
|
||||
|
||||
$validation = new Validation();
|
||||
|
||||
if(!$validation->recoverPassword($params))
|
||||
if($validation->recoverPassword($params) !== true)
|
||||
{
|
||||
if($securitylog)
|
||||
{
|
||||
|
@@ -9,6 +9,7 @@ use Typemill\Models\StorageWrapper;
|
||||
use Typemill\Models\Validation;
|
||||
use Typemill\Models\User;
|
||||
use Typemill\Models\Settings;
|
||||
use Typemill\Static\Translations;
|
||||
|
||||
class ControllerWebSetup extends Controller
|
||||
{
|
||||
@@ -65,39 +66,49 @@ class ControllerWebSetup extends Controller
|
||||
$userroles = $this->c->get('acl')->getRoles();
|
||||
|
||||
# validate user
|
||||
if($validate->newUser($params, $userroles))
|
||||
if($validate->newSetupUser($params, $userroles) !== true)
|
||||
{
|
||||
$userdata = [
|
||||
'username' => $params['username'],
|
||||
'email' => $params['email'],
|
||||
'userrole' => $params['userrole'],
|
||||
'password' => $params['password']
|
||||
];
|
||||
$this->c->get('flash')->addMessage('error', Translations::translate('Please correct the errors in the form.'));
|
||||
|
||||
$user = new User();
|
||||
|
||||
# create initial user
|
||||
$username = $user->createUser($userdata);
|
||||
|
||||
if($username)
|
||||
{
|
||||
usleep(30000);
|
||||
|
||||
$user->setUser($username);
|
||||
|
||||
$user->login();
|
||||
|
||||
# create initial settings file
|
||||
$settingsModel = new Settings();
|
||||
$settingsModel->createSettings();
|
||||
|
||||
$urlinfo = $this->c->get('urlinfo');
|
||||
$route = $urlinfo['baseurl'] . '/tm/system';
|
||||
|
||||
usleep(30000);
|
||||
|
||||
return $response->withHeader('Location', $route)->withStatus(302);
|
||||
}
|
||||
return $response->withHeader('Location', $this->routeParser->urlFor('setup.show'))->withStatus(302);
|
||||
}
|
||||
|
||||
$userdata = [
|
||||
'username' => $params['username'],
|
||||
'email' => $params['email'],
|
||||
'userrole' => $params['userrole'],
|
||||
'password' => $params['password']
|
||||
];
|
||||
|
||||
$user = new User();
|
||||
|
||||
# create initial user
|
||||
$username = $user->createUser($userdata);
|
||||
|
||||
if($username)
|
||||
{
|
||||
usleep(30000);
|
||||
|
||||
$user->setUser($username);
|
||||
|
||||
$user->login();
|
||||
|
||||
# create initial settings file
|
||||
$settingsModel = new Settings();
|
||||
$settingsModel->createSettings();
|
||||
|
||||
$urlinfo = $this->c->get('urlinfo');
|
||||
$route = $urlinfo['baseurl'] . '/tm/system';
|
||||
|
||||
usleep(30000);
|
||||
|
||||
$this->c->get('flash')->addMessage('error', Translations::translate('Account created. Please login with your username and password now.'));
|
||||
|
||||
return $response->withHeader('Location', $route)->withStatus(302);
|
||||
}
|
||||
|
||||
$this->c->get('flash')->addMessage('error', Translations::translate('We could not create the user. Please check if the settings folde is writable.'));
|
||||
|
||||
return $response->withHeader('Location', $this->routeParser->urlFor('setup.show'))->withStatus(302);
|
||||
}
|
||||
}
|
@@ -3,9 +3,10 @@
|
||||
namespace Typemill\Middleware;
|
||||
|
||||
use Psr\Http\Server\MiddlewareInterface;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;
|
||||
use Slim\Psr7\Response;
|
||||
#use Slim\Psr7\Response;
|
||||
|
||||
class AssetMiddleware implements MiddlewareInterface
|
||||
{
|
||||
@@ -34,8 +35,8 @@ class AssetMiddleware implements MiddlewareInterface
|
||||
# $this->container['view']['base_url'] = $uri->getBaseUrl();
|
||||
# $this->container['view']['current_url'] = $uri->getPath();
|
||||
|
||||
$response = $handler->handle($request);
|
||||
|
||||
return $response;
|
||||
$response = $handler->handle($request);
|
||||
|
||||
return $response;
|
||||
}
|
||||
}
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Typemill\Models;
|
||||
|
||||
use Valitron\Validator;
|
||||
@@ -273,6 +273,44 @@ class Validation
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* validation for setup user (in backoffice)
|
||||
*
|
||||
* @param array $params with form data.
|
||||
* @return obj $v the validation object passed to a result method.
|
||||
*/
|
||||
|
||||
public function newSetupUser(array $params, array $userroles)
|
||||
{
|
||||
$v = new Validator($params);
|
||||
$v->rule('required', ['username', 'email', 'password'])->message("required");
|
||||
$v->rule('alphaNum', 'username')->message("invalid characters");
|
||||
$v->rule('lengthBetween', 'password', 5, 40)->message("Length between 5 - 40");
|
||||
$v->rule('lengthBetween', 'username', 3, 20)->message("Length between 3 - 20");
|
||||
$v->rule('userAvailable', 'username')->message("User already exists");
|
||||
$v->rule('noHTML', 'firstname')->message(" contains HTML");
|
||||
$v->rule('lengthBetween', 'firstname', 2, 40);
|
||||
$v->rule('noHTML', 'lastname')->message(" contains HTML");
|
||||
$v->rule('lengthBetween', 'lastname', 2, 40);
|
||||
$v->rule('email', 'email')->message("e-mail is invalid");
|
||||
$v->rule('emailAvailable', 'email')->message("Email already taken");
|
||||
$v->rule('in', 'userrole', $userroles);
|
||||
|
||||
if($v->validate())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if(isset($_SESSION))
|
||||
{
|
||||
$_SESSION['errors'] = $v->errors();
|
||||
}
|
||||
|
||||
return $v->errors();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* validation for new user (in backoffice)
|
||||
@@ -341,7 +379,7 @@ class Validation
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return $v->errors();
|
||||
}
|
||||
|
||||
public function emailsearch(array $params)
|
||||
@@ -357,7 +395,7 @@ class Validation
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return $v->errors();
|
||||
}
|
||||
|
||||
public function newLicense(array $params)
|
||||
|
@@ -13,7 +13,7 @@
|
||||
|
||||
<form method="POST" action="{{ url_for("setup.create") }}" autocomplete="off">
|
||||
|
||||
<fieldset class="">
|
||||
<fieldset>
|
||||
|
||||
<div class="my-2 {{ errors.username ? ' errors' : '' }}">
|
||||
<label for="username">{{ translate('Username') }} <abbr title="{{ translate('required') }}">*</abbr></label>
|
||||
@@ -23,8 +23,8 @@
|
||||
value="{{ old.username }}"
|
||||
class="form-control block w-full px-3 py-1.5 text-base font-normal text-gray-700 bg-white bg-clip-padding border border-solid border-gray-300 transition ease-in-out m-0 focus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none"
|
||||
required>
|
||||
{% if errors.signup_username %}
|
||||
<span class="">{{ errors.username|first }}</span>
|
||||
{% if errors.username %}
|
||||
<span class="text-rose-300">{{ errors.username|first }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
value="{{ old.email }}"
|
||||
class="form-control block w-full px-3 py-1.5 text-base font-normal text-gray-700 bg-white bg-clip-padding border border-solid border-gray-300 transition ease-in-out m-0 focus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none"
|
||||
required>
|
||||
{% if errors.signup_email %}
|
||||
<span class="">{{ errors.email|first }}</span>
|
||||
{% if errors.email %}
|
||||
<span class="text-rose-300">{{ errors.email|first }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
class="form-control block w-full px-3 py-1.5 text-base font-normal text-gray-700 bg-white bg-clip-padding border border-solid border-gray-300 transition ease-in-out m-0 focus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none"
|
||||
required>
|
||||
{% if errors.password %}
|
||||
<span class="error">{{ errors.password|first }}</span>
|
||||
<span class="text-rose-300">{{ errors.password|first }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
|
@@ -1626,6 +1626,10 @@ video {
|
||||
padding-left: 3rem;
|
||||
}
|
||||
|
||||
.pl-24 {
|
||||
padding-left: 6rem;
|
||||
}
|
||||
|
||||
.pr-1 {
|
||||
padding-right: 0.25rem;
|
||||
}
|
||||
@@ -1658,10 +1662,6 @@ video {
|
||||
padding-top: 0.75rem;
|
||||
}
|
||||
|
||||
.pl-24 {
|
||||
padding-left: 6rem;
|
||||
}
|
||||
|
||||
.text-left {
|
||||
text-align: left;
|
||||
}
|
||||
@@ -1769,6 +1769,11 @@ video {
|
||||
color: rgb(250 250 249 / var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.text-rose-300 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(253 164 175 / var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.text-stone-400 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(168 162 158 / var(--tw-text-opacity));
|
||||
|
Reference in New Issue
Block a user