Compare commits

...

11 Commits

39 changed files with 907 additions and 516 deletions

49
.gitea/workflows/php.yml Normal file
View File

@ -0,0 +1,49 @@
name: Tests & Lint & Deploy to Railway
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: [ '8.1' ]
steps:
- uses: actions/checkout@v3
- name: Set up PHP ${{ matrix.php-versions }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
- name: PHP Security Checker
uses: StephaneBour/actions-php-security-checker@1.1
- name: Setup project
run: make setup
- name: Check lint
run: make lint
- name: Execute tests (Unit and Feature tests) via PHPUnit
run: make test-coverage
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Deploy
run: make deploy
env:
SSH_TOKEN: ${{ secrets.SSH_TOKEN }}

View File

@ -25,10 +25,12 @@ class ConfirmablePasswordController extends Controller
*/ */
public function store(Request $request): RedirectResponse public function store(Request $request): RedirectResponse
{ {
if (! Auth::guard('web')->validate([ if (
! Auth::guard('web')->validate([
'email' => $request->user()->email, 'email' => $request->user()->email,
'password' => $request->password, 'password' => $request->password,
])) { ])
) {
throw ValidationException::withMessages([ throw ValidationException::withMessages([
'password' => __('auth.password'), 'password' => __('auth.password'),
]); ]);

View File

@ -8,5 +8,6 @@ use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController class Controller extends BaseController
{ {
use AuthorizesRequests, ValidatesRequests; use AuthorizesRequests;
use ValidatesRequests;
} }

View File

@ -0,0 +1,46 @@
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class UserController extends Controller
{
public function index()
{
$users = User::all();
return view('users.index', compact('users'));
}
public function store($request)
{
if (Auth::guest()) {
abort(403, 'Вы не авторизованы!');
}
$validated = $request->validated();
$createdById = Auth::id();
$data = [...$validated, 'created_by_id' => $createdById];
$task = new User();
$task->fill($data);
$task->save();
if (array_key_exists('labels', $validated)) {
$task->labels()->attach($validated['labels']);
}
$message = __('controllers.tasks_create');
return redirect()->route('tasks.index');
}
public function create()
{
if (Auth::guest()) {
abort(403, 'Вы не авторизованы!');
}
return view('users.create');
}
}

View File

@ -17,7 +17,8 @@ class ProfileUpdateRequest extends FormRequest
{ {
return [ return [
'name' => ['required', 'string', 'max:255'], 'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'lowercase', 'email', 'max:255', Rule::unique(User::class)->ignore($this->user()->id)], 'email' => ['required', 'string', 'lowercase', 'email', 'max:255',
Rule::unique(User::class)->ignore($this->user()->id)],
]; ];
} }
} }

View File

@ -10,7 +10,9 @@ use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable class User extends Authenticatable
{ {
use HasApiTokens, HasFactory, Notifiable; use HasApiTokens;
use HasFactory;
use Notifiable;
/** /**
* The attributes that are mass assignable. * The attributes that are mass assignable.

View File

@ -9,7 +9,8 @@
"guzzlehttp/guzzle": "^7.8.1", "guzzlehttp/guzzle": "^7.8.1",
"laravel/framework": "^10.40.0", "laravel/framework": "^10.40.0",
"laravel/sanctum": "^3.3.3", "laravel/sanctum": "^3.3.3",
"laravel/tinker": "^2.9.0" "laravel/tinker": "^2.9.0",
"laravelcollective/html": "^6.4.1"
}, },
"require-dev": { "require-dev": {
"fakerphp/faker": "^1.23.1", "fakerphp/faker": "^1.23.1",
@ -20,7 +21,9 @@
"nunomaduro/collision": "^7.10.0", "nunomaduro/collision": "^7.10.0",
"phpunit/phpunit": "^10.5.5", "phpunit/phpunit": "^10.5.5",
"spatie/laravel-ignition": "^2.4.0", "spatie/laravel-ignition": "^2.4.0",
"barryvdh/laravel-ide-helper": "^2.13.0" "barryvdh/laravel-ide-helper": "^2.13.0",
"squizlabs/php_codesniffer": "^3.8.1",
"phpstan/phpstan": "^1.10.55"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
@ -35,6 +38,8 @@
} }
}, },
"scripts": { "scripts": {
"phpcs": "phpcs",
"phpcbf": "phpcbf",
"post-autoload-dump": [ "post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi" "@php artisan package:discover --ansi"

229
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "7ab883d941740dee8af1ec0280a43509", "content-hash": "30204d0ba928d14bfac0180a964aef93",
"packages": [ "packages": [
{ {
"name": "brick/math", "name": "brick/math",
@ -1499,6 +1499,79 @@
}, },
"time": "2024-01-04T16:10:04+00:00" "time": "2024-01-04T16:10:04+00:00"
}, },
{
"name": "laravelcollective/html",
"version": "v6.4.1",
"source": {
"type": "git",
"url": "https://github.com/LaravelCollective/html.git",
"reference": "64ddfdcaeeb8d332bd98bef442bef81e39c3910b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/LaravelCollective/html/zipball/64ddfdcaeeb8d332bd98bef442bef81e39c3910b",
"reference": "64ddfdcaeeb8d332bd98bef442bef81e39c3910b",
"shasum": ""
},
"require": {
"illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0",
"illuminate/routing": "^6.0|^7.0|^8.0|^9.0|^10.0",
"illuminate/session": "^6.0|^7.0|^8.0|^9.0|^10.0",
"illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0",
"illuminate/view": "^6.0|^7.0|^8.0|^9.0|^10.0",
"php": ">=7.2.5"
},
"require-dev": {
"illuminate/database": "^6.0|^7.0|^8.0|^9.0|^10.0",
"mockery/mockery": "~1.0",
"phpunit/phpunit": "~8.5|^9.5.10"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.x-dev"
},
"laravel": {
"providers": [
"Collective\\Html\\HtmlServiceProvider"
],
"aliases": {
"Form": "Collective\\Html\\FormFacade",
"Html": "Collective\\Html\\HtmlFacade"
}
}
},
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"Collective\\Html\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Adam Engebretson",
"email": "adam@laravelcollective.com"
},
{
"name": "Taylor Otwell",
"email": "taylorotwell@gmail.com"
}
],
"description": "HTML and Form Builders for the Laravel Framework",
"homepage": "https://laravelcollective.com",
"support": {
"issues": "https://github.com/LaravelCollective/html/issues",
"source": "https://github.com/LaravelCollective/html"
},
"abandoned": "spatie/laravel-html",
"time": "2023-04-25T02:46:11+00:00"
},
{ {
"name": "league/commonmark", "name": "league/commonmark",
"version": "2.4.1", "version": "2.4.1",
@ -7126,16 +7199,16 @@
}, },
{ {
"name": "phpdocumentor/type-resolver", "name": "phpdocumentor/type-resolver",
"version": "1.7.3", "version": "1.8.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git", "url": "https://github.com/phpDocumentor/TypeResolver.git",
"reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc",
"reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7178,9 +7251,9 @@
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": { "support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues", "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0"
}, },
"time": "2023-08-12T11:01:26+00:00" "time": "2024-01-11T11:49:22+00:00"
}, },
{ {
"name": "phpstan/phpdoc-parser", "name": "phpstan/phpdoc-parser",
@ -7229,6 +7302,68 @@
}, },
"time": "2024-01-04T17:06:16+00:00" "time": "2024-01-04T17:06:16+00:00"
}, },
{
"name": "phpstan/phpstan",
"version": "1.10.55",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
"reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/9a88f9d18ddf4cf54c922fbeac16c4cb164c5949",
"reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949",
"shasum": ""
},
"require": {
"php": "^7.2|^8.0"
},
"conflict": {
"phpstan/phpstan-shim": "*"
},
"bin": [
"phpstan",
"phpstan.phar"
],
"type": "library",
"autoload": {
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "PHPStan - PHP Static Analysis Tool",
"keywords": [
"dev",
"static analysis"
],
"support": {
"docs": "https://phpstan.org/user-guide/getting-started",
"forum": "https://github.com/phpstan/phpstan/discussions",
"issues": "https://github.com/phpstan/phpstan/issues",
"security": "https://github.com/phpstan/phpstan/security/policy",
"source": "https://github.com/phpstan/phpstan-src"
},
"funding": [
{
"url": "https://github.com/ondrejmirtes",
"type": "github"
},
{
"url": "https://github.com/phpstan",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
"type": "tidelift"
}
],
"time": "2024-01-08T12:32:40+00:00"
},
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "10.1.11", "version": "10.1.11",
@ -8922,6 +9057,86 @@
], ],
"time": "2024-01-04T14:51:24+00:00" "time": "2024-01-04T14:51:24+00:00"
}, },
{
"name": "squizlabs/php_codesniffer",
"version": "3.8.1",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
"reference": "14f5fff1e64118595db5408e946f3a22c75807f7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7",
"reference": "14f5fff1e64118595db5408e946f3a22c75807f7",
"shasum": ""
},
"require": {
"ext-simplexml": "*",
"ext-tokenizer": "*",
"ext-xmlwriter": "*",
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
},
"bin": [
"bin/phpcbf",
"bin/phpcs"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Greg Sherwood",
"role": "Former lead"
},
{
"name": "Juliette Reinders Folmer",
"role": "Current lead"
},
{
"name": "Contributors",
"homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
}
],
"description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
"homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"keywords": [
"phpcs",
"standards",
"static analysis"
],
"support": {
"issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
"security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
"source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
},
"funding": [
{
"url": "https://github.com/PHPCSStandards",
"type": "github"
},
{
"url": "https://github.com/jrfnl",
"type": "github"
},
{
"url": "https://opencollective.com/php_codesniffer",
"type": "open_collective"
}
],
"time": "2024-01-11T20:47:48+00:00"
},
{ {
"name": "symfony/yaml", "name": "symfony/yaml",
"version": "v6.4.0", "version": "v6.4.0",

View File

@ -3,6 +3,7 @@
namespace Database\Seeders; namespace Database\Seeders;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents; // use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use App\Models\User;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder class DatabaseSeeder extends Seeder
@ -12,11 +13,12 @@ class DatabaseSeeder extends Seeder
*/ */
public function run(): void public function run(): void
{ {
// \App\Models\User::factory(10)->create(); \App\Models\User::factory(10)->create();
// \App\Models\User::factory()->create([ \App\Models\User::factory()->create([
// 'name' => 'Test User', 'name' => 'admin',
// 'email' => 'test@example.com', 'email' => 'test@example.com',
// ]); 'password' => 123456
]);
} }
} }

41
phpcs.xml Normal file
View File

@ -0,0 +1,41 @@
<?xml version="1.0"?>
<ruleset name="PlatformApi">
<description>PSR12 Laravel standards.</description>
<rule ref="PSR12"/>
<arg name="basepath" value="."/>
<arg name="colors"/>
<arg name="parallel" value="75"/>
<arg value="np"/>
<arg name="extensions" value="php"/>
<file>app</file>
<file>config</file>
<file>resources</file>
<file>routes</file>
<file>tests</file>
<file>database</file>
<rule ref="Generic.ControlStructures.InlineControlStructure">
<properties>
<property name="error" value="true"/>
</properties>
</rule>
<exclude-pattern>app/Console/Kernel.php</exclude-pattern>
<exclude-pattern>app/Http/Controllers/Controller.php</exclude-pattern>
<exclude-pattern>app/Http/Controllers/Auth/*</exclude-pattern>
<exclude-pattern>app/Http/Requests/Auth/LoginRequest.php</exclude-pattern>
<exclude-pattern>bootstrap/cache/*</exclude-pattern>
<exclude-pattern>config/*</exclude-pattern>
<exclude-pattern>public/index.php</exclude-pattern>
<exclude-pattern>storage/framework/views/*</exclude-pattern>
<exclude-pattern>server.php</exclude-pattern>
<exclude-pattern>*/migrations/*</exclude-pattern>
<exclude-pattern>*/seeds/*</exclude-pattern>
<exclude-pattern>*/*.blade.php</exclude-pattern>
<exclude-pattern>*/*.js</exclude-pattern>
<exclude-pattern>vendor/*</exclude-pattern>
<exclude-pattern>node_modules/*</exclude-pattern>
</ruleset>

View File

@ -21,8 +21,8 @@
<env name="APP_ENV" value="testing"/> <env name="APP_ENV" value="testing"/>
<env name="BCRYPT_ROUNDS" value="4"/> <env name="BCRYPT_ROUNDS" value="4"/>
<env name="CACHE_DRIVER" value="array"/> <env name="CACHE_DRIVER" value="array"/>
<!-- <env name="DB_CONNECTION" value="sqlite"/> --> <env name="DB_CONNECTION" value="sqlite"/>
<!-- <env name="DB_DATABASE" value=":memory:"/> --> <env name="DB_DATABASE" value=":memory:"/>
<env name="MAIL_MAILER" value="array"/> <env name="MAIL_MAILER" value="array"/>
<env name="PULSE_ENABLED" value="false"/> <env name="PULSE_ENABLED" value="false"/>
<env name="QUEUE_CONNECTION" value="sync"/> <env name="QUEUE_CONNECTION" value="sync"/>

View File

@ -1,114 +0,0 @@
<?php
// Only process POST reqeusts.
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Get the form fields and remove MORALspace.
$name = strip_tags(trim($_POST["name"]));
$name = str_replace(array("\r","\n"),array(" "," "),$name);
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$subject = trim($_POST["subject"]);
$message = trim($_POST["message"]);
// Check that data was sent to the mailer.
if ( empty($name) OR empty($subject) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Set a 400 (bad request) response code and exit.
http_response_code(400);
echo "Please complete the form and try again.";
exit;
}
// Set the recipient email address.
// FIXME: Update this to your desired email address.
$recipient = "mdsalim400@gmail.com";
// Set the email subject.
$sender = "New contact from $name";
//Email Header
$head = " /// STTHEMES \\\ ";
// Build the email content.
$email_content = "$head\n\n\n";
$email_content .= "Name: $name\n";
$email_content .= "Email: $email\n\n";
$email_content .= "Subject: $subject\n\n";
$email_content .= "Message:\n$message\n";
// Build the email headers.
$email_headers = "From: $name <$email>";
// Send the email.
if (mail($recipient, $sender, $email_content, $email_headers)) {
// Set a 200 (okay) response code.
http_response_code(200);
echo "Thank You! Your message has been sent.";
} else {
// Set a 500 (internal server error) response code.
http_response_code(500);
echo "Oops! Something went wrong and we couldn't send your message.";
}
} else {
// Not a POST request, set a 403 (forbidden) response code.
http_response_code(403);
echo "There was a problem with your submission, please try again.";
}
?>

View File

@ -1 +0,0 @@
sass --watch "C:\Users\Tushar\Dropbox\Tushar\tutorgo\assets\scss\main.scss":"C:\Users\Tushar\Dropbox\Tushar\tutorgo\assets\css\main.css"

View File

@ -7,14 +7,14 @@
<!-- Email Address --> <!-- Email Address -->
<div> <div>
<x-input-label for="email" :value="__('Email')" /> <x-input-label for="email" :value="__('Электронная почта')" />
<x-text-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus autocomplete="username" /> <x-text-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus autocomplete="username" />
<x-input-error :messages="$errors->get('email')" class="mt-2" /> <x-input-error :messages="$errors->get('email')" class="mt-2" />
</div> </div>
<!-- Password --> <!-- Password -->
<div class="mt-4"> <div class="mt-4">
<x-input-label for="password" :value="__('Password')" /> <x-input-label for="password" :value="__('Пароль')" />
<x-text-input id="password" class="block mt-1 w-full" <x-text-input id="password" class="block mt-1 w-full"
type="password" type="password"
@ -28,27 +28,27 @@
<div class="block mt-4"> <div class="block mt-4">
<label for="remember_me" class="inline-flex items-center"> <label for="remember_me" class="inline-flex items-center">
<input id="remember_me" type="checkbox" class="rounded dark:bg-gray-900 border-gray-300 dark:border-gray-700 text-indigo-600 shadow-sm focus:ring-indigo-500 dark:focus:ring-indigo-600 dark:focus:ring-offset-gray-800" name="remember"> <input id="remember_me" type="checkbox" class="rounded dark:bg-gray-900 border-gray-300 dark:border-gray-700 text-indigo-600 shadow-sm focus:ring-indigo-500 dark:focus:ring-indigo-600 dark:focus:ring-offset-gray-800" name="remember">
<span class="ms-2 text-sm text-gray-600 dark:text-gray-400">{{ __('Remember me') }}</span> <span class="ms-2 text-sm text-gray-600 dark:text-gray-400">{{ __('Запомнить меня') }}</span>
</label> </label>
</div> </div>
<div class="flex items-center justify-end mt-4"> <div class="flex items-center justify-end mt-4">
@if (Route::has('password.request')) @if (Route::has('password.request'))
<a class="underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800" href="{{ route('password.request') }}"> <a class="underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800" href="{{ route('password.request') }}">
{{ __('Forgot your password?') }} {{ __('Забыли пароль?') }}
</a> </a>
@endif @endif
<x-primary-button class="ms-3"> <x-primary-button class="ms-3">
{{ __('Log in') }} {{ __('Войти') }}
</x-primary-button> </x-primary-button>
</div> </div>
<div class="flex items-center justify-center mt-4"> {{--<div class="flex items-center justify-center mt-4">
@if (Route::has('register')) @if (Route::has('register'))
<a> Нет аккаунта? </a> <a> Нет аккаунта? </a>
<a href="{{ route('register') }}">Зарегистрируйтесь</a> <a href="{{ route('register') }}">Зарегистрируйтесь</a>
@endif @endif
</div> </div> --}}
</form> </form>
</x-guest-layout> </x-guest-layout>

View File

@ -1,103 +0,0 @@
<!-- footer area start -->
<footer>
<div class="footer__area grey-bg">
<div class="container">
<div class="footer__top ">
<div class="row">
<div class="col-xxl-3 col-xl-3 col-lg-3 col-md-6">
<div class="footer__widget mb-50 footer-col-1">
<div class="footer__widget-logo mb-30">
<a href="index.html"><img src="https://mkgtu.ru/local/templates/modern_green_new_s1/images/logo.svg" alt=""></a>
</div>
<div class="footer__widget-content">
<p>Следи за последними новостями в наших соц.сетях</p>
<div class="footer__social">
<span><a href="#"><i class="fab fa-vk"></i></a></span>
<span><a href="#" class="yt"><i class="fab fa-youtube"></i></a></span>
<span><a href="#" class="tw"><i class="fab fa-telegram"></i></a></span>
</div>
</div>
</div>
</div>
<div class="col-xxl-2 col-xl-2 col-lg-3 col-6">
<div class="footer__widget mb-50 footer-col-2">
<h3 class="footer__widget-title">Информация</h3>
<div class="footer__widget-content">
<ul>
<li><a href="#">Правила приёма</a></li>
<li><a href="#">Иностранным абитуриентам</a></li>
<li><a href="#">Мероприятия</a></li>
<li><a href="#">Оф. сайт</a></li>
</ul>
</div>
</div>
</div>
<div class="col-xxl-3 col-xl-3 col-lg-3 col-6">
<div class="footer__widget mb-50 footer-col-3">
<h3 class="footer__widget-title">Контакты</h3>
<div class="footer__widget-content">
<ul>
<li><a href="#">Приёмная комиссия <br /><p>8 (8772) 52-30-08</p></a></li>
<li><a href="#">Приёмная комиссия филиала МГТУ в пос. Яблоновском <br /><p>8-938-530-53-14</p></a></li>
<li><a href="#">Почта info@mkgtu.ru</a></li>
<li><a href="#">385000, Республика Адыгея, г. Майкоп, ул. Первомайская, д. 191</a></li>
</ul>
</div>
</div>
</div>
<div class="col-xxl-4 col-xl-4 col-lg-3 col-md-6">
<div class="footer__widget mb-50 footer-col-4">
<h3 class="footer__widget-title">Подпишись на обновления</h3>
<div class="footer__widget-content">
<div class="footer__subscribe">
<p>Получай последние новости приёмной кампании на свою почту</p>
<form action="#">
<div class="footer__subscribe-box">
<div class="footer__subscribe-input">
<input type="email" placeholder="Email адрес ">
</div>
<button class="footer-sub-btn" type="submit">Подписаться</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="footer__bottom">
<div class="row">
<div class="col-12">
<div class="footer__copyright text-center">
<p>© Copyright © 1994-2023
Федеральное государственное бюджетное образовательное учреждение высшего образования «Майкопский государственный технологический университет» Допускается цитирование материалов без получения предварительного согласия www.mkgtu.ru при условии размещения в тексте обязательной ссылки на сайт www.mkgtu.ru, приложение для android "Расписание университета2017" является официальным приложением использование в нем материалов допускается. Для интернет-изданий обязательно размещение прямой, открытой для поисковых систем гиперссылки на цитируемые статьи не ниже второго абзаца в тексте или в качестве источника. Нарушение исключительных прав преследуется по закону</p>
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
<!-- footer area end -->
<!-- JS here 1-->
<script src="{{ URL::to('js/vendor/jquery.js') }}"></script>
<script src="{{ URL::to('js/vendor/waypoints.js') }}"></script>
<script src="{{ URL::to('js/bootstrap-bundle.js') }}"></script>
<script src="{{ URL::to('js/meanmenu.js') }}"></script>
<script src="{{ URL::to('js/slick.js') }}"></script>
<script src="{{ URL::to('js/magnific-popup.js') }}"></script>
<script src="{{ URL::to('js/parallax.js') }}"></script>
<script src="{{ URL::to('js/nice-select.js') }}"></script>
<script src="{{ URL::to('js/counterup.js') }}"></script>
<script src="{{ URL::to('js/wow.js') }}"></script>
<script src="{{ URL::to('js/isotope-pkgd.js') }}"></script>
<script src="{{ URL::to('js/imagesloaded-pkgd.js') }}"></script>
<script src="{{ URL::to('js/ajax-form.js') }}"></script>
<script src="{{ URL::to('js/countdown.js') }}"></script>
<script src="{{ URL::to('js/main.js?v=2') }}"></script>
</body>
</html>

View File

@ -1,223 +0,0 @@
<!doctype html>
<html class="no-js" lang="ru">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Абитуриенту ФГБОУ ВО "МГТУ"</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Place favicon.ico in the root directory -->
<link rel="shortcut icon" type="image/x-icon" href="{{ URL::to('img/logo/favicon.png') }}">
<!-- CSS here -->
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/bootstrap.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/meanmenu.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/animate.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/slick.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/magnific-popup.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/nice-select.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/font-awesome-pro.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/elegent-icons.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/spacing.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/main.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/font-awesome.min.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/all.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/brands.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/solid.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/fonta-wesome.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/regular.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/svg-with-js.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/v4-shims.css') }}">
<!-- css end here-->
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
</head>
<body>
<!-- pre loader area start -->
<div class="tp-preloader">
<div class="tp-preloader__center">
<div style="position:relative; width:300px; height:300px;">
<img src="{{ URL::to('svg/img/circle.svg') }}" style="position:absolute; left:0px; top:0px;" alt="" />
<img src="{{ URL::to('svg/img/schit.svg') }}" style="position:absolute; left:0px; top:0px;" alt="" />
<img src="{{ URL::to('svg/img/book.svg') }}" style="position:absolute; left:0px; top:0px;" alt="" />
</div>
<!--svg width="170" height="132" viewBox="0 0 170 132" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6_12)">
<path d="M113.978 61.1738L55.4552 2.8186C52.8594 0.230266 48.7298 0.230266 46.252 2.8186L1.88784 46.4673C-0.707934 49.0557 -0.707934 53.1735 1.88784 55.6441L14.5127 68.2329L66.9002 120.353L113.86 75.7626C118.108 71.8801 118.108 65.2916 113.978 61.1738Z" fill="black"/>
<path d="M167.781 51.5263L90.2621 129.059C86.1325 133.177 79.6431 133.177 75.5134 129.059L31.6212 85.2923C35.7509 89.4101 42.2403 89.4101 46.37 85.2923L123.889 7.75996C126.485 5.17163 130.615 5.17163 133.092 7.75996L167.663 42.2319C170.377 44.8202 170.377 48.938 167.781 51.5263Z" fill="#5392FB"/>
<path d="M74.9235 35.0551C76.6933 36.8199 78.4632 38.467 79.9971 39.8788C82.1209 41.6436 82.2389 44.8202 80.233 46.8203L48.8478 78.1156C44.1282 82.8217 36.4588 82.8217 31.7392 78.1156C27.0197 73.4095 27.0197 65.7622 31.7392 61.0561L63.1245 29.7608C65.1303 27.7607 68.3161 27.8784 70.0859 29.9961C71.5018 31.5256 73.1536 33.2904 74.9235 35.0551Z" fill="currentColor" class="path-yellow"/>
</g>
<defs>
<clipPath id="clip0_6_12">
<rect width="169.787" height="131.064" fill="white" transform="translate(0 0.936172)"/>
</clipPath>
</defs>
</svg-->
</div>
</div>
<!-- pre loader area end -->
<!-- back to top start -->
<button class="tp-backtotop">
<span><i class="fal fa-angle-double-up"></i></span>
</button>
<!-- back to top end -->
<!-- header area start -->
<header>
<div class="tp-header__area tp-header__transparent">
<div class="tp-header__main" id="header-sticky">
<div class="container">
<div class="row align-items-center">
<div class="col-xxl-2 col-xl-2 col-lg-2 col-md-6 col-6">
<div class="logo has-border">
<a href="index.php">
<!--img src="assets/img/logo/white-logo.png" alt="logo"-->
<h5 style="color: #fff">АБИТУРИЕНТУ МГТУ</h5>
</a>
</div>
</div>
<div class="col-xxl-6 col-xl-6 col-lg-7 d-none d-lg-block">
<div class="main-menu">
<nav id="mobile-menu">
<ul>
<li>
<a href="index.php">Главная</a>
</li>
<li>
<a href="about-us.html">Правила приема</a>
</li>
<li class="has-dropdown">
<a href="course.html">Образование</a>
<ul class="submenu">
<li><a href="course-list.html">Бакалвриат</a></li>
<li><a href="course.html">Специалитет</a></li>
<li><a href="course-details.html">Магистратура</a></li>
<li><a href="cart.html">Аспирантура</a></li>
<li><a href="checkout.html">Доп. образование</a></li>
</ul>
</li>
<!--li class="has-dropdown">
<a href="#">Pages</a>
<ul class="submenu">
<li><a href="event.html">Events</a></li>
<li><a href="event-details.html">Event Details</a></li>
<li><a href="instructor.html">Instructor V1</a></li>
<li><a href="instructor-2.html">Instructor V2</a></li>
<li><a href="instructor-details.html">Instructor Details</a></li>
<li><a href="wishlist.html">Wishlist</a></li>
<li><a href="sign-in.html">Sign In</a></li>
<li><a href="sign-up.html">Sign Up</a></li>
<li><a href="faq.html">Faq</a></li>
<li><a href="404.html">404</a></li>
</ul>
</li-->
<!--li class="has-dropdown">
<a href="blog.html"></a>
<ul class="submenu">
<li><a href="blog.html">Blog</a></li>
<li><a href="blog-details.html">Blog Details</a></li>
</ul>
</li-->
<li>
<a href="contact.html">Контакты</a>
</li>
<li>
@if (Route::has('login'))
@auth
<a href="{{ url('/dashboard') }}" > {{ Auth::user()->name }} </a>
@else
<a href="{{ route('login') }}" >Вход</a>
@endauth
@endif
</li>
</ul>
</nav>
</div>
</div>
<div class="col-xxl-4 col-xl-4 col-lg-3 col-md-6 col-6">
<div class="tp-header__main-right d-flex justify-content-end align-items-center pl-30">
<div class="header-acttion-btns d-flex align-items-center d-none d-md-flex">
<a href="tel:+(443)003030266" class="tp-phone-btn d-none d-xl-block">
<i class="fa-thin fa-phone"></i>8 (8772) 52-30-08 <span>Приёмная комиссия</span></a>
</div>
<div class="tp-header__hamburger ml-50 d-lg-none">
<button class="hamburger-btn offcanvas-open-btn">
<span></span>
<span></span>
<span></span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
<!-- header area end -->
<!-- offcanvas area start -->
<div class="offcanvas__area" >
<div class="offcanvas__wrapper">
<div class="offcanvas__content">
<div class="offcanvas__close text-end">
<button class="offcanvas__close-btn offcanvas-close-btn">
<i class="fal fa-times"></i>
</button>
</div>
<div class="offcanvas__top mb-40">
<div class="offcanvas__subtitle">
<span class="text-white d-inline-block mb-25 d-none d-lg-block">ELEVATE YOUR BUSINESS WITH</span>
</div>
<div class="offcanvas__logo mb-40">
<a href="/">
<img src="{{ URL::to('img/logo/logo.png') }}" alt="logo">
</a>
</div>
<div class="offcanvas-info d-none d-lg-block">
<p>Limitless customization options & Elementor compatibility let anyone create a beautiful website
with Valiance. </p>
</div>
<div class="offcanvas__btn d-none d-lg-block">
<a href="contact.html" class="tp-btn">Contact us <span></span></a>
</div>
</div>
<div class="mobile-menu fix mb-40"></div>
<div class="offcamvas__bottom">
<div class="offcanvas__cta mt-30 mb-20">
<h3 class="offcanvas__cta-title">Contact info</h3>
<span>27 Division St, New York,</span>
<span>+154 4808 84082 4830</span>
<span>support@noxia.com</span>
<span>Office Hours: 8AM - 5PM</span>
<span>Sunday - Wekend Day</span>
</div>
</div>
</div>
</div>
</div>
<div class="body-overlay"></div>
<!-- offcanvas area end -->

View File

@ -1,3 +1,7 @@
<button {{ $attributes->merge(['type' => 'submit', 'class' => 'inline-flex items-center px-4 py-2 bg-gray-800 dark:bg-gray-200 border border-transparent rounded-md font-semibold text-xs text-white dark:text-gray-800 uppercase tracking-widest hover:bg-gray-700 dark:hover:bg-white focus:bg-gray-700 dark:focus:bg-white active:bg-gray-900 dark:active:bg-gray-300 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 transition ease-in-out duration-150']) }}> {{--<button {{ $attributes->merge(['type' => 'submit', 'class' => 'inline-flex items-center px-4 py-2 bg-gray-800 dark:bg-gray-200 border border-transparent rounded-md font-semibold text-xs text-white dark:text-gray-800 uppercase tracking-widest hover:bg-gray-700 dark:hover:bg-white focus:bg-gray-700 dark:focus:bg-white active:bg-gray-900 dark:active:bg-gray-300 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 transition ease-in-out duration-150']) }}>
{{ $slot }}
</button>
--}}
<button {{ $attributes->merge(['type' => 'submit', 'class' => ' transition ease-in-out duration-150 px-4 py-2 text-white rounded rounded-5 ', 'style' => 'background-color: #019870']) }}>
{{ $slot }} {{ $slot }}
</button> </button>

View File

@ -15,14 +15,14 @@
@vite(['resources/css/app.css', 'resources/js/app.js']) @vite(['resources/css/app.css', 'resources/js/app.js'])
</head> </head>
<body class="font-sans text-gray-900 antialiased" > <body class="font-sans text-gray-900 antialiased" >
<div class="min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0 bg-gray-100 dark:bg-gray-900"> <div class="min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0 bg-gray-100 dark:bg-gray-900" style="background-color:#006147">
<div> <div class="d-flex justify-content-center align-items-center text-center">
<a href="/"> <a href="/">
<x-application-logo class="w-20 h-20 fill-current text-gray-500" /> <img src="{{ URL::to('svg/img/schit.svg') }}" style="max-width: 60%; display: unset " alt="" />
</a> </a>
</div> </div>
<div class="w-full sm:max-w-md mt-6 px-6 py-4 bg-white dark:bg-gray-800 shadow-md overflow-hidden sm:rounded-lg"> <div class="w-full sm:max-w-md mt-6 px-6 py-4 shadow-md overflow-hidden sm:rounded-lg" style="background-color: whitesmoke">
{{ $slot }} {{ $slot }}
</div> </div>
</div> </div>

View File

@ -0,0 +1,329 @@
<!doctype html>
<html class="no-js" lang="ru">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Абитуриенту ФГБОУ ВО "МГТУ"</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Place favicon.ico in the root directory -->
<link rel="shortcut icon" type="image/x-icon" href="{{ URL::to('img/logo/favicon.png') }}">
<!-- CSS here -->
<link rel="stylesheet" type="text/css" href="{{ asset('css/bootstrap.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/meanmenu.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/animate.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/slick.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/magnific-popup.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/nice-select.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/font-awesome-pro.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/elegent-icons.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/spacing.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/main.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/font-awesome.min.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/all.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/brands.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/solid.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/fonta-wesome.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/regular.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/svg-with-js.css') }}">
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/awesome/css/v4-shims.css') }}">
<!-- css end here-->
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
</head>
<body>
<!-- pre loader area start -->
<div class="tp-preloader">
<div class="tp-preloader__center">
<div style="position:relative; width:300px; height:300px;">
<img src="{{ URL::to('svg/img/circle.svg') }}" style="position:absolute; left:0px; top:0px;" alt="" />
<img src="{{ URL::to('svg/img/schit.svg') }}" style="position:absolute; left:0px; top:0px;" alt="" />
<img src="{{ URL::to('svg/img/book.svg') }}" style="position:absolute; left:0px; top:0px;" alt="" />
</div>
<!--svg width="170" height="132" viewBox="0 0 170 132" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6_12)">
<path d="M113.978 61.1738L55.4552 2.8186C52.8594 0.230266 48.7298 0.230266 46.252 2.8186L1.88784 46.4673C-0.707934 49.0557 -0.707934 53.1735 1.88784 55.6441L14.5127 68.2329L66.9002 120.353L113.86 75.7626C118.108 71.8801 118.108 65.2916 113.978 61.1738Z" fill="black"/>
<path d="M167.781 51.5263L90.2621 129.059C86.1325 133.177 79.6431 133.177 75.5134 129.059L31.6212 85.2923C35.7509 89.4101 42.2403 89.4101 46.37 85.2923L123.889 7.75996C126.485 5.17163 130.615 5.17163 133.092 7.75996L167.663 42.2319C170.377 44.8202 170.377 48.938 167.781 51.5263Z" fill="#5392FB"/>
<path d="M74.9235 35.0551C76.6933 36.8199 78.4632 38.467 79.9971 39.8788C82.1209 41.6436 82.2389 44.8202 80.233 46.8203L48.8478 78.1156C44.1282 82.8217 36.4588 82.8217 31.7392 78.1156C27.0197 73.4095 27.0197 65.7622 31.7392 61.0561L63.1245 29.7608C65.1303 27.7607 68.3161 27.8784 70.0859 29.9961C71.5018 31.5256 73.1536 33.2904 74.9235 35.0551Z" fill="currentColor" class="path-yellow"/>
</g>
<defs>
<clipPath id="clip0_6_12">
<rect width="169.787" height="131.064" fill="white" transform="translate(0 0.936172)"/>
</clipPath>
</defs>
</svg-->
</div>
</div>
<!-- pre loader area end -->
<!-- back to top start -->
<button class="tp-backtotop">
<span><i class="fal fa-angle-double-up"></i></span>
</button>
<!-- back to top end -->
<!-- header area start -->
<header>
<div class="tp-header__area tp-header__transparent">
<div class="tp-header__main" id="header-sticky">
<div class="container">
<div class="row align-items-center">
<div class="col-xxl-2 col-xl-2 col-lg-2 col-md-6 col-6">
<div class="logo has-border">
<a href="index.php">
<!--img src="assets/img/logo/white-logo.png" alt="logo"-->
<h5 style="color: #fff">АБИТУРИЕНТУ МГТУ</h5>
</a>
</div>
</div>
<div class="col-xxl-6 col-xl-6 col-lg-7 d-none d-lg-block">
<div class="main-menu">
<nav id="mobile-menu">
<ul>
<li>
<a href="index.php">Главная</a>
</li>
<li>
<a href="about-us.html">Правила приема</a>
</li>
<li class="has-dropdown">
<a href="course.html">Образование</a>
<ul class="submenu">
<li><a href="course-list.html">Бакалвриат</a></li>
<li><a href="course.html">Специалитет</a></li>
<li><a href="course-details.html">Магистратура</a></li>
<li><a href="cart.html">Аспирантура</a></li>
<li><a href="checkout.html">Доп. образование</a></li>
</ul>
</li>
<!--li class="has-dropdown">
<a href="#">Pages</a>
<ul class="submenu">
<li><a href="event.html">Events</a></li>
<li><a href="event-details.html">Event Details</a></li>
<li><a href="instructor.html">Instructor V1</a></li>
<li><a href="instructor-2.html">Instructor V2</a></li>
<li><a href="instructor-details.html">Instructor Details</a></li>
<li><a href="wishlist.html">Wishlist</a></li>
<li><a href="sign-in.html">Sign In</a></li>
<li><a href="sign-up.html">Sign Up</a></li>
<li><a href="faq.html">Faq</a></li>
<li><a href="404.html">404</a></li>
</ul>
</li-->
<!--li class="has-dropdown">
<a href="blog.html"></a>
<ul class="submenu">
<li><a href="blog.html">Blog</a></li>
<li><a href="blog-details.html">Blog Details</a></li>
</ul>
</li-->
<li>
<a href="contact.html">Контакты</a>
</li>
<li>
@if (Route::has('login'))
@auth
<a href="{{ url('/dashboard') }}" > {{ Auth::user()->name }} </a>
@else
<a href="{{ route('login') }}" >Вход</a>
@endauth
@endif
</li>
</ul>
</nav>
</div>
</div>
<div class="col-xxl-4 col-xl-4 col-lg-3 col-md-6 col-6">
<div class="tp-header__main-right d-flex justify-content-end align-items-center pl-30">
<div class="header-acttion-btns d-flex align-items-center d-none d-md-flex">
<a href="tel:+(443)003030266" class="tp-phone-btn d-none d-xl-block">
<i class="fa-thin fa-phone"></i>8 (8772) 52-30-08 <span>Приёмная комиссия</span></a>
</div>
<div class="tp-header__hamburger ml-50 d-lg-none">
<button class="hamburger-btn offcanvas-open-btn">
<span></span>
<span></span>
<span></span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
<!-- header area end -->
<!-- offcanvas area start -->
<div class="offcanvas__area" >
<div class="offcanvas__wrapper">
<div class="offcanvas__content">
<div class="offcanvas__close text-end">
<button class="offcanvas__close-btn offcanvas-close-btn">
<i class="fal fa-times"></i>
</button>
</div>
<div class="offcanvas__top mb-40">
<div class="offcanvas__subtitle">
<span class="text-white d-inline-block mb-25 d-none d-lg-block">ELEVATE YOUR BUSINESS WITH</span>
</div>
<div class="offcanvas__logo mb-40">
<a href="/">
<img src="{{ URL::to('img/logo/logo.png') }}" alt="logo">
</a>
</div>
<div class="offcanvas-info d-none d-lg-block">
<p>Limitless customization options & Elementor compatibility let anyone create a beautiful website
with Valiance. </p>
</div>
<div class="offcanvas__btn d-none d-lg-block">
<a href="contact.html" class="tp-btn">Contact us <span></span></a>
</div>
</div>
<div class="mobile-menu fix mb-40"></div>
<div class="offcamvas__bottom">
<div class="offcanvas__cta mt-30 mb-20">
<h3 class="offcanvas__cta-title">Contact info</h3>
<span>27 Division St, New York,</span>
<span>+154 4808 84082 4830</span>
<span>support@noxia.com</span>
<span>Office Hours: 8AM - 5PM</span>
<span>Sunday - Wekend Day</span>
</div>
</div>
</div>
</div>
</div>
<div class="body-overlay"></div>
<!-- offcanvas area end -->
@yield('content')
<!-- footer area start -->
<footer>
<div class="footer__area grey-bg">
<div class="container">
<div class="footer__top ">
<div class="row">
<div class="col-xxl-3 col-xl-3 col-lg-3 col-md-6">
<div class="footer__widget mb-50 footer-col-1">
<div class="footer__widget-logo mb-30">
<a href="index.html"><img src="https://mkgtu.ru/local/templates/modern_green_new_s1/images/logo.svg" alt=""></a>
</div>
<div class="footer__widget-content">
<p>Следи за последними новостями в наших соц.сетях</p>
<div class="footer__social">
<span><a href="#"><i class="fab fa-vk"></i></a></span>
<span><a href="#" class="yt"><i class="fab fa-youtube"></i></a></span>
<span><a href="#" class="tw"><i class="fab fa-telegram"></i></a></span>
</div>
</div>
</div>
</div>
<div class="col-xxl-2 col-xl-2 col-lg-3 col-6">
<div class="footer__widget mb-50 footer-col-2">
<h3 class="footer__widget-title">Информация</h3>
<div class="footer__widget-content">
<ul>
<li><a href="#">Правила приёма</a></li>
<li><a href="#">Иностранным абитуриентам</a></li>
<li><a href="#">Мероприятия</a></li>
<li><a href="#">Оф. сайт</a></li>
</ul>
</div>
</div>
</div>
<div class="col-xxl-3 col-xl-3 col-lg-3 col-6">
<div class="footer__widget mb-50 footer-col-3">
<h3 class="footer__widget-title">Контакты</h3>
<div class="footer__widget-content">
<ul>
<li><a href="#">Приёмная комиссия <br /><p>8 (8772) 52-30-08</p></a></li>
<li><a href="#">Приёмная комиссия филиала МГТУ в пос. Яблоновском <br /><p>8-938-530-53-14</p></a></li>
<li><a href="#">Почта info@mkgtu.ru</a></li>
<li><a href="#">385000, Республика Адыгея, г. Майкоп, ул. Первомайская, д. 191</a></li>
</ul>
</div>
</div>
</div>
<div class="col-xxl-4 col-xl-4 col-lg-3 col-md-6">
<div class="footer__widget mb-50 footer-col-4">
<h3 class="footer__widget-title">Подпишись на обновления</h3>
<div class="footer__widget-content">
<div class="footer__subscribe">
<p>Получай последние новости приёмной кампании на свою почту</p>
<form action="#">
<div class="footer__subscribe-box">
<div class="footer__subscribe-input">
<input type="email" placeholder="Email адрес ">
</div>
<button class="footer-sub-btn" type="submit">Подписаться</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="footer__bottom">
<div class="row">
<div class="col-12">
<div class="footer__copyright text-center">
<p>© Copyright © 1994-2023
Федеральное государственное бюджетное образовательное учреждение высшего образования «Майкопский государственный технологический университет» Допускается цитирование материалов без получения предварительного согласия www.mkgtu.ru при условии размещения в тексте обязательной ссылки на сайт www.mkgtu.ru, приложение для android "Расписание университета2017" является официальным приложением использование в нем материалов допускается. Для интернет-изданий обязательно размещение прямой, открытой для поисковых систем гиперссылки на цитируемые статьи не ниже второго абзаца в тексте или в качестве источника. Нарушение исключительных прав преследуется по закону</p>
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
<!-- footer area end -->
<!-- JS here 1-->
<script src="{{ URL::to('js/vendor/jquery.js') }}"></script>
<script src="{{ URL::to('js/vendor/waypoints.js') }}"></script>
<script src="{{ URL::to('js/bootstrap-bundle.js') }}"></script>
<script src="{{ URL::to('js/meanmenu.js') }}"></script>
<script src="{{ URL::to('js/slick.js') }}"></script>
<script src="{{ URL::to('js/magnific-popup.js') }}"></script>
<script src="{{ URL::to('js/parallax.js') }}"></script>
<script src="{{ URL::to('js/nice-select.js') }}"></script>
<script src="{{ URL::to('js/counterup.js') }}"></script>
<script src="{{ URL::to('js/wow.js') }}"></script>
<script src="{{ URL::to('js/isotope-pkgd.js') }}"></script>
<script src="{{ URL::to('js/imagesloaded-pkgd.js') }}"></script>
<script src="{{ URL::to('js/ajax-form.js') }}"></script>
<script src="{{ URL::to('js/countdown.js') }}"></script>
<script src="{{ URL::to('js/main.js?v=2') }}"></script>
</body>
</html>

View File

@ -1,4 +1,5 @@
@include('components.header') @extends('layouts.layout')
@section('content')
<main> <main>
<!-- hero section --> <!-- hero section -->
@ -444,4 +445,4 @@
</main> </main>
@include('components.footer') @endsection

View File

@ -0,0 +1,50 @@
@auth()
<div class="grid col-span-full">
<h1 class="max-w-2xl mb-4 text-4xl leading-none tracking-tight md:text-5xl xl:text-6xl dark:text-white"> создать
пользователя</h1>
{{ Form::open(['url' => route('users.store'), 'method' => 'POST', 'class' => 'w-50']) }}
<div class="flex flex-col">
<div>
{{ Form::label('name', 'Логин') }}
</div>
<div class="mt-2">
{{ Form::text('name', '', ['class' => 'form-control rounded border-gray-300 w-1/3']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('name') }}
@endif
</div>
<div>
{{ Form::label('email', 'электронная почта') }}
</div>
<div class="mt-2">
{{ Form::text('email', '', ['class' => 'form-control rounded border-gray-300 w-1/3']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('email') }}
@endif
</div>
<div>
{{ Form::label('password', 'Пароль') }}
</div>
<div class="mt-2">
{{ Form::text('password', '', ['class' => 'form-control rounded border-gray-300 w-1/3']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('password') }}
@endif
</div>
<div class="mt-4">
{{ Form::submit('создать', ['class' => 'bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded']) }}
</div>
</div>
{{ Form::close() }}
</div>
@endauth

View File

@ -0,0 +1,75 @@
<h2>список пользователей</h2>
<a href="{{ route('users.create') }}"> создать пользователя</a>
<br>
<br>
<table class="mt-4">
<thead class="border-b-2 border-solid border-black text-left" style="text-align: left">
<tr>
<th>id</th>
<td>name</td>
<td>email</td>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<td>{{ $user->id }}</td>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
</tr>
@endforeach
</tbody>
</table>
{{--<table class="mt-4">--}}
{{-- <thead class="border-b-2 border-solid border-black text-left" style="text-align: left">--}}
{{-- <tr>--}}
{{-- <th>{{ __('layout.table_id') }}</th>--}}
{{-- <th>{{ __('layout.table_task_status') }}</th>--}}
{{-- <th>{{ __('layout.table_name') }}</th>--}}
{{-- <th>{{ __('layout.table_creater') }}</th>--}}
{{-- <th>{{ __('layout.table_assigned') }}</th>--}}
{{-- <th>{{ __('layout.table_date_of_creation') }}</th>--}}
{{-- @auth()--}}
{{-- <th>{{ __('layout.table_actions') }}</th>--}}
{{-- @endauth--}}
{{-- </tr>--}}
{{-- </thead>--}}
{{-- <tbody>--}}
{{-- @foreach($tasks as $task)--}}
{{-- <tr class="border-b border-dashed text-left">--}}
{{-- <td>{{ $task->id }}</td>--}}
{{-- <td>{{ $taskStatuses[$task->status_id] }}</td>--}}
{{-- <td><a href="{{ route('tasks.show', $task) }}">{{ $task->name }}</a></td>--}}
{{-- <td>{{ $users[$task->created_by_id] }}</td>--}}
{{-- <td>{{ $users[$task->assigned_to_id] }}</td>--}}
{{-- <td>{{ date_format($task->created_at, 'd.m.Y') }}</td>--}}
{{-- @auth()--}}
{{-- <td>--}}
{{-- @can('delete', $task)--}}
{{-- <a--}}
{{-- class="text-red-600 hover:text-red-900"--}}
{{-- rel="nofollow"--}}
{{-- data-method="delete"--}}
{{-- data-confirm="{{ __('layout.table_delete_question') }}"--}}
{{-- href="{{ route('tasks.destroy', $task) }}"--}}
{{-- >--}}
{{-- {{ __('layout.table_delete') }}--}}
{{-- </a>--}}
{{-- @endcan--}}
{{-- @can('update', $task)--}}
{{-- <a class="text-blue-600 hover:text-blue-900"--}}
{{-- href="{{ route("tasks.edit", $task) }}"--}}
{{-- >--}}
{{-- {{ __('layout.table_edit') }}--}}
{{-- </a>--}}
{{-- @endcan--}}
{{-- </td>--}}
{{-- @endauth--}}
{{-- </tr>--}}
{{-- @endforeach--}}
{{-- </tbody>--}}
{{--</table>--}}

View File

@ -1,6 +1,7 @@
<?php <?php
use App\Http\Controllers\ProfileController; use App\Http\Controllers\ProfileController;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
/* /*
@ -15,12 +16,20 @@ use Illuminate\Support\Facades\Route;
*/ */
Route::get('/', function () { Route::get('/', function () {
return view('welcome'); return view('test');
}); })->name('home');
Route::get('test', function () {
Route::resource('/users', UserController::class);
Route::get('/test', function () {
return view('test'); return view('test');
}); });
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');
Route::get('/dashboard', function () { Route::get('/dashboard', function () {
return view('dashboard'); return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard'); })->middleware(['auth', 'verified'])->name('dashboard');

View File

@ -11,14 +11,14 @@ class AuthenticationTest extends TestCase
{ {
use RefreshDatabase; use RefreshDatabase;
public function test_login_screen_can_be_rendered(): void public function testLoginScreenCanBeRendered(): void
{ {
$response = $this->get('/login'); $response = $this->get('/login');
$response->assertStatus(200); $response->assertStatus(200);
} }
public function test_users_can_authenticate_using_the_login_screen(): void public function testUsersCanAuthenticateUsingTheLoginScreen(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();
@ -31,7 +31,7 @@ class AuthenticationTest extends TestCase
$response->assertRedirect(RouteServiceProvider::HOME); $response->assertRedirect(RouteServiceProvider::HOME);
} }
public function test_users_can_not_authenticate_with_invalid_password(): void public function testUsersCanNotAuthenticateWithInvalidPassword(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();
@ -43,7 +43,7 @@ class AuthenticationTest extends TestCase
$this->assertGuest(); $this->assertGuest();
} }
public function test_users_can_logout(): void public function testUsersCanLogout(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();

View File

@ -14,7 +14,7 @@ class EmailVerificationTest extends TestCase
{ {
use RefreshDatabase; use RefreshDatabase;
public function test_email_verification_screen_can_be_rendered(): void public function testEmailVerificationScreenCanBeRendered(): void
{ {
$user = User::factory()->create([ $user = User::factory()->create([
'email_verified_at' => null, 'email_verified_at' => null,
@ -25,7 +25,7 @@ class EmailVerificationTest extends TestCase
$response->assertStatus(200); $response->assertStatus(200);
} }
public function test_email_can_be_verified(): void public function testEmailCanBeVerified(): void
{ {
$user = User::factory()->create([ $user = User::factory()->create([
'email_verified_at' => null, 'email_verified_at' => null,
@ -46,7 +46,7 @@ class EmailVerificationTest extends TestCase
$response->assertRedirect(RouteServiceProvider::HOME . '?verified=1'); $response->assertRedirect(RouteServiceProvider::HOME . '?verified=1');
} }
public function test_email_is_not_verified_with_invalid_hash(): void public function testEmailIsNotVerifiedWithInvalidHash(): void
{ {
$user = User::factory()->create([ $user = User::factory()->create([
'email_verified_at' => null, 'email_verified_at' => null,

View File

@ -10,7 +10,7 @@ class PasswordConfirmationTest extends TestCase
{ {
use RefreshDatabase; use RefreshDatabase;
public function test_confirm_password_screen_can_be_rendered(): void public function testConfirmPasswordScreenCanBeRendered(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();
@ -19,7 +19,7 @@ class PasswordConfirmationTest extends TestCase
$response->assertStatus(200); $response->assertStatus(200);
} }
public function test_password_can_be_confirmed(): void public function testPasswordCanBeConfirmed(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();
@ -31,7 +31,7 @@ class PasswordConfirmationTest extends TestCase
$response->assertSessionHasNoErrors(); $response->assertSessionHasNoErrors();
} }
public function test_password_is_not_confirmed_with_invalid_password(): void public function testPasswordIsNotConfirmedWithInvalidPassword(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();

View File

@ -12,14 +12,14 @@ class PasswordResetTest extends TestCase
{ {
use RefreshDatabase; use RefreshDatabase;
public function test_reset_password_link_screen_can_be_rendered(): void public function testResetPasswordLinkScreenCanBeRendered(): void
{ {
$response = $this->get('/forgot-password'); $response = $this->get('/forgot-password');
$response->assertStatus(200); $response->assertStatus(200);
} }
public function test_reset_password_link_can_be_requested(): void public function testResetPasswordLinkCanBeRequested(): void
{ {
Notification::fake(); Notification::fake();
@ -30,7 +30,7 @@ class PasswordResetTest extends TestCase
Notification::assertSentTo($user, ResetPassword::class); Notification::assertSentTo($user, ResetPassword::class);
} }
public function test_reset_password_screen_can_be_rendered(): void public function testResetPasswordScreenCanBeRendered(): void
{ {
Notification::fake(); Notification::fake();
@ -47,7 +47,7 @@ class PasswordResetTest extends TestCase
}); });
} }
public function test_password_can_be_reset_with_valid_token(): void public function testPasswordCanbeResetWithValidToken(): void
{ {
Notification::fake(); Notification::fake();

View File

@ -11,7 +11,7 @@ class PasswordUpdateTest extends TestCase
{ {
use RefreshDatabase; use RefreshDatabase;
public function test_password_can_be_updated(): void public function testPasswordCanBeUpdated(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();
@ -31,7 +31,7 @@ class PasswordUpdateTest extends TestCase
$this->assertTrue(Hash::check('new-password', $user->refresh()->password)); $this->assertTrue(Hash::check('new-password', $user->refresh()->password));
} }
public function test_correct_password_must_be_provided_to_update_password(): void public function testCorrectPasswordMustBeProvidedToUpdatePassword(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();

View File

@ -10,14 +10,14 @@ class RegistrationTest extends TestCase
{ {
use RefreshDatabase; use RefreshDatabase;
public function test_registration_screen_can_be_rendered(): void public function testRegistrationScreenCanBeRendered(): void
{ {
$response = $this->get('/register'); $response = $this->get('/register');
$response->assertStatus(200); $response->assertStatus(200);
} }
public function test_new_users_can_register(): void public function testNewUsersCanRegister(): void
{ {
$response = $this->post('/register', [ $response = $this->post('/register', [
'name' => 'Test User', 'name' => 'Test User',

View File

@ -10,7 +10,7 @@ class ExampleTest extends TestCase
/** /**
* A basic test example. * A basic test example.
*/ */
public function test_the_application_returns_a_successful_response(): void public function testTheApplicationReturnsASuccessfulResponse(): void
{ {
$response = $this->get('/'); $response = $this->get('/');

View File

@ -10,7 +10,7 @@ class ProfileTest extends TestCase
{ {
use RefreshDatabase; use RefreshDatabase;
public function test_profile_page_is_displayed(): void public function testProfilePageIsDisplayed(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();
@ -21,7 +21,7 @@ class ProfileTest extends TestCase
$response->assertOk(); $response->assertOk();
} }
public function test_profile_information_can_be_updated(): void public function testProfileInformationCanBeUpdated(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();
@ -43,7 +43,7 @@ class ProfileTest extends TestCase
$this->assertNull($user->email_verified_at); $this->assertNull($user->email_verified_at);
} }
public function test_email_verification_status_is_unchanged_when_the_email_address_is_unchanged(): void public function testEmailVerificationStatusIsUnchangedWhenTheEmailAddressAsUnchanged(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();
@ -61,7 +61,7 @@ class ProfileTest extends TestCase
$this->assertNotNull($user->refresh()->email_verified_at); $this->assertNotNull($user->refresh()->email_verified_at);
} }
public function test_user_can_delete_their_account(): void public function testUserCanDeleteTheirAccount(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();
@ -79,7 +79,7 @@ class ProfileTest extends TestCase
$this->assertNull($user->fresh()); $this->assertNull($user->fresh());
} }
public function test_correct_password_must_be_provided_to_delete_account(): void public function testCorrectPasswordMustBeProvidedToDeleteAccount(): void
{ {
$user = User::factory()->create(); $user = User::factory()->create();

View File

@ -9,7 +9,7 @@ class ExampleTest extends TestCase
/** /**
* A basic test example. * A basic test example.
*/ */
public function test_that_true_is_true(): void public function testThatTrueIsTrue(): void
{ {
$this->assertTrue(true); $this->assertTrue(true);
} }