В данный момент имею следующее:
class Login{
public function index(){
App::redirect_if(Register::auth()->is_authorized(),'/');
if( Register::request()->has('registration','post') ){
$validator=new Validator();
$validator->make( Register::request()->only('post','email'),[ 'email'=> ['email','required','unique:users:email'] ] );
if( $validator->messages()->isEmpty() ){
$LModel=new LModel( new UMapper( 'users', 'user' ) );
$LModel->registration( array_merge(Register::request()->only('post','email'),['registration_date'=>time()]) );
}
else{
foreach($validator->messages()->all() as $message){
echo '<li>'.$message.'</li>';
}
}
}
elseif( Register::request()->has('auth','post') ){
$validator=new Validator();
$validator->make( Register::request()->only('post','email','password'),[ 'email'=> ['email'], 'password'=>['regex:'.Validator::H_PASSWORD_PATTERN] ] );
if($validator->messages()->isEmpty()){
$LModel=new LModel( new UMapper( 'users', 'user') );
!$LModel->auth()?:App::redirect('/');
echo 'Неверный логин или пароль';
}
else{
echo 'Неверный email или пароль';
}
}
View::render('login');
}
Как видно контроллер очень толстый и выполняет не те функции которые должен. Как можно решить это?
Куда следует вынести логику, в соответствующую модель или добавить события и переложить часть реализации на них?
В данном случае это один из самых маленьких контроллеров.