Registration module in development state

master
Andrey Pokidov 4 years ago
commit 0830274a05

@ -0,0 +1,5 @@
<?php
return [
'name' => 'Register'
];

@ -0,0 +1,35 @@
<?php
namespace Modules\Register\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Register\Http\Forms\RegistrationForm;
class RegisterController extends Controller
{
/**
* Отображение формы регистрации
* @return Response
*/
public function index()
{
$form = new RegistrationForm();
return view('register::form', [
'form' => $form
]);
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
//
}
}

@ -0,0 +1,43 @@
<?php
namespace Modules\Register\Http\Forms;
use Artmark\Forms\Form;
//use App\Models\User;
/**
* Description of RegistrationForm
*
* @author Andrey Pokidov <pokidov@e-traffic.ru>
*/
class RegistrationForm extends Form
{
const MINIMAL_PASSWORD_LENGTH = 6;
public function __construct()
{
$this->newEmail('email')->setId('email')
->setLabelText(__('register::register.email_field'))
->setRequired()
->setMaxLength(255);
$this->newText('phone')->setId('phone')
->setLabelText(__('register::register.phone_field'))
->setMaxLength(25);
$this->newPassword('password')->setId('password')
->setLabelText(__('register::register.password_field'))
->setRequired()
->setMaxLength(255);
$this->newPassword('password_confirm')->setId('password_confirm')
->setLabelText(__('register::register.password_confirm_field'))
->setRequired()
->setMaxLength(255);
$this->newCheckbox('agree')->setId('agree')
->setLabelText(__('register::register.agree'))
->setRequired();
}
}

@ -0,0 +1,106 @@
<?php
namespace Modules\Register\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Database\Eloquent\Factory;
class RegisterServiceProvider extends ServiceProvider
{
/**
* Boot the application events.
*
* @return void
*/
public function boot()
{
$this->registerTranslations();
$this->registerConfig();
$this->registerViews();
$this->registerFactories();
$this->loadMigrationsFrom(module_path('Register', 'Database/Migrations'));
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->app->register(RouteServiceProvider::class);
}
/**
* Register config.
*
* @return void
*/
protected function registerConfig()
{
$this->publishes([
module_path('Register', 'Config/config.php') => config_path('register.php'),
], 'config');
$this->mergeConfigFrom(
module_path('Register', 'Config/config.php'), 'register'
);
}
/**
* Register views.
*
* @return void
*/
public function registerViews()
{
$viewPath = resource_path('views/modules/register');
$sourcePath = module_path('Register', 'Resources/views');
$this->publishes([
$sourcePath => $viewPath
],'views');
$this->loadViewsFrom(array_merge(array_map(function ($path) {
return $path . '/modules/register';
}, \Config::get('view.paths')), [$sourcePath]), 'register');
}
/**
* Register translations.
*
* @return void
*/
public function registerTranslations()
{
$langPath = resource_path('lang/modules/register');
if (is_dir($langPath)) {
$this->loadTranslationsFrom($langPath, 'register');
} else {
$this->loadTranslationsFrom(module_path('Register', 'Resources/lang'), 'register');
}
}
/**
* Register an additional directory of factories.
*
* @return void
*/
public function registerFactories()
{
if (! app()->environment('production') && $this->app->runningInConsole()) {
app(Factory::class)->load(module_path('Register', 'Database/factories'));
}
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return [];
}
}

@ -0,0 +1,57 @@
<?php
namespace Modules\Register\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
/**
* The module namespace to assume when generating URLs to actions.
*
* @var string
*/
protected $moduleNamespace = 'Modules\Register\Http\Controllers';
/**
* Define the routes for the application.
*
* @return void
*/
public function map()
{
//$this->mapApiRoutes();
$this->mapWebRoutes();
}
/**
* Define the "web" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*
* @return void
*/
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->moduleNamespace)
->group(module_path('Register', '/Routes/web.php'));
}
/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*
* @return void
*/
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->moduleNamespace)
->group(module_path('Register', '/Routes/api.php'));
}
}

@ -0,0 +1,13 @@
<?php
return [
'title' => 'Registration',
'email_field' => 'E-mail',
'phone_field' => 'Mobile phone number',
'password_field' => 'Password',
'password_confirm_field' => 'Password confirmation',
'agree' => 'Agree with terms of service',
'open_login_form' => 'Log into the personal cabinet',
];

@ -0,0 +1,13 @@
<?php
return [
'title' => 'Регистрация',
'email_field' => 'Адрес электронной почты',
'phone_field' => 'Номер мобильного телефона',
'password_field' => 'Пароль',
'password_confirm_field' => 'Повтор пароля',
'agree' => 'Принимаю пользовтельское соглашение',
'open_login_form' => 'Вход в личный кабинет',
];

@ -0,0 +1,50 @@
@extends('common')
@section('content')
@form_begin($form)
@csrf
@method('post')
<div class="auth">
<div class="auth__form form">
<span class="form__caption">{{ __('register::register.title') }}</span>
@if(Session::has('message.registration_error'))
<div class="validation-summary-errors">{!! Session::get('message.registration_error') !!}</div>
@endif
<div class="form__field field">
<span class="field-validation-error"></span>
<p>@form_label($form->field('email'))</p>
@form_field($form->field('email'))
</div>
<div class="form__field field">
<span class="field-validation-error"></span>
<p>@form_label($form->field('phone'))</p>
@form_field($form->field('phone'))
</div>
<div class="form__field field">
<span class="field-validation-error"></span>
<p>@form_label($form->field('password'))</p>
@form_field($form->field('password'))
</div>
<div class="form__field field">
<span class="field-validation-error"></span>
<p>@form_label($form->field('password_confirm'))</p>
@form_field($form->field('password_confirm'))
</div>
<div class="form__field field">
<span class="field-validation-error"></span>
@form_field($form->field('agree')) @form_label($form->field('agree'), '')
</div>
<button class="btn log-in-btn" type="submit">{{ __('common.continue') }}</button>
</div>
<div class="auth__links">
<a href="/login" class="btn btn_gray btn_gray__reg_1">{{ __('register::register.open_login_form') }}</a>
</div>
</div>
@form_end()
@endsection

@ -0,0 +1,20 @@
<?php
use Illuminate\Http\Request;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
/*
Route::middleware('auth:api')->get('/register', function (Request $request) {
return $request->user();
});
*/

@ -0,0 +1,14 @@
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('register', 'RegisterController@index');

@ -0,0 +1,27 @@
{
"name": "artmark/laravel-module-register",
"description": "User registration module",
"type": "package",
"license": "Proprietary",
"authors": [
{
"name": "Andrey Pokidov",
"email": "pokidov@e-traffic.ru"
}
],
"extra": {
"laravel": {
"providers": [
"Modules\\Register\\Providers\\RegisterServiceProvider"
],
"aliases": {
}
}
},
"autoload": {
"psr-4": {
"Modules\\Register\\": ""
}
}
}

@ -0,0 +1,13 @@
{
"name": "Register",
"alias": "register",
"description": "",
"keywords": [],
"order": 0,
"providers": [
"Modules\\Register\\Providers\\RegisterServiceProvider"
],
"aliases": {},
"files": [],
"requires": []
}

@ -0,0 +1,17 @@
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"cross-env": "^5.1.4",
"laravel-mix": "^4.0.7",
"laravel-mix-merge-manifest": "^0.1.2"
}
}

@ -0,0 +1,11 @@
const mix = require('laravel-mix');
require('laravel-mix-merge-manifest');
mix.setPublicPath('../../public').mergeManifest();
mix.js(__dirname + '/Resources/assets/js/app.js', 'js/register.js')
.sass( __dirname + '/Resources/assets/sass/app.scss', 'css/register.css');
if (mix.inProduction()) {
mix.version();
}
Loading…
Cancel
Save