Andrea Pollastri 5 years ago
parent
commit
c277fe6f14

+ 51 - 0
app/Http/Controllers/SetupController.php

@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use App\Http\Controllers\Controller;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Hash;
+
+class SetupController extends Controller
+{
+
+    public function index() {
+        $user = Auth::user();
+        return view('settings', compact('user'));
+    }
+
+    public function profile(Request $request) {
+        $this->validate($request, [
+            'email' => 'required|email',
+            'name' => 'required'
+        ]);
+        $user = Auth::user();
+        $user->name  = $request->name;
+        $user->email = $request->email;
+        $user->save();
+        $request->session()->flash('alert-success','Profile has been updated!');
+        return redirect('/settings');
+    }
+
+    public function password(Request $request) {
+        $this->validate($request, [
+            'current' => 'required',
+            'password' => 'required|confirmed|min:8',
+            'password_confirmation' => 'required|min:8'
+        ]);
+        $user = Auth::user();
+        if ($request->password != $request->password_confirmation) {
+            return redirect('/settings');
+        }
+        if (!Hash::check($request->current, $user->password)) {
+            $request->session()->flash('alert-error','Wrong password!');
+            return redirect('/settings');
+        }
+        $user->password = Hash::make($request->password);
+        $user->save();
+        $request->session()->flash('alert-success','Password has been updated!');
+        return redirect('/settings');
+    }
+
+}

+ 3 - 3
resources/views/layouts/app.blade.php

@@ -39,10 +39,10 @@
                     <span>Applications</span>
                     <span>Applications</span>
                 </a>
                 </a>
             </li>
             </li>
-            <li class="nav-item {{ request()->is('domains') ? 'active' : '' }}">
-                <a class="nav-link" href="/domains">
+            <li class="nav-item {{ request()->is('alises') ? 'active' : '' }}">
+                <a class="nav-link" href="/alises">
                     <i class="fas fa-fw fa-globe"></i>
                     <i class="fas fa-fw fa-globe"></i>
-                    <span>Domains</span>
+                    <span>Alises</span>
                 </a>
                 </a>
             </li>
             </li>
             <li class="nav-item {{ request()->is('users') ? 'active' : '' }}">
             <li class="nav-item {{ request()->is('users') ? 'active' : '' }}">

+ 148 - 0
resources/views/settings.blade.php

@@ -0,0 +1,148 @@
+@extends('layouts.app')
+
+
+
+@section('title')
+Settings
+@endsection
+
+
+
+@section('content')
+@if(Session::has('alert-success'))
+    <div class="alert alert-success" role="alert">
+        <b><i class="fa fa-check" aria-hidden="true"></i></b> {{ Session::get('alert-success') }}
+    </div>
+@endif
+    @if(Session::has('alert-error'))
+    <div class="alert alert-danger" role="alert">
+        <b><i class="fa fa-times" aria-hidden="true"></i></b> {{ Session::get('alert-error') }}
+    </div>
+@endif
+<div class="row">
+    <div class="col-lg-6 mb-4">
+        <div class="card sm-12">
+            <div class="card-header text-center">
+                Edit your information
+            </div>
+            <div class="card-body">
+                <form method="POST" action="/settings/profile" class="ws-validate">
+                    @csrf
+                    <div class="form-group row">
+                        <label for="name" class="col-md-4 col-form-label text-md-right">Name</label>
+                        <div class="col-md-6">
+                            <div class="form-group">
+                                <input id="name" type="text" class="form-control" name="name" value="{{ $user->name }}" required autocomplete="name" autofocus>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="form-group row">
+                        <label for="email" class="col-md-4 col-form-label text-md-right">E-mail</label>
+                        <div class="col-md-6">
+                            <div class="form-group">
+                                <input id="email" type="email" class="form-control" name="email" value="{{ $user->email }}" required autocomplete="email">
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="form-group row mb-0">
+                        <div class="col-md-6 offset-md-4">
+                            <button type="submit" class="btn btn-primary">
+                                Update
+                            </button>
+                        </div>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </div>
+    <div class="col-lg-6 mb-4">
+        <div class="card sm-12">
+            <div class="card-header text-center">
+                Change your password
+            </div>
+            <div class="card-body">
+                <div class="form-group row">
+                    <form method="POST" action="/settings/password" class="ws-validate">
+                        @csrf
+                        <div class="form-group row">
+                        <label for="password" class="col-md-6 col-form-label text-md-right">Password</label>
+                            <div class="col-md-6">
+                                <div class="form-group">
+                                    <input id="current" type="password" class="form-control" name="current" required autocomplete="new-password">
+                                </div>
+                            </div>
+                        </div>
+                        <div class="form-group row">
+                            <label for="password" class="col-md-6 col-form-label text-md-right">New password *</label>
+                            <div class="col-md-6">
+                                <div class="form-group">
+                                    <input id="password" type="password" class="form-control" name="password" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" required autocomplete="new-password">
+                                </div>
+                            </div>
+                        </div>
+                        <div class="form-group row">
+                            <label for="password-confirm" class="col-md-6 col-form-label text-md-right">Confirm password</label>
+                            <div class="col-md-6">
+                                <div class="form-group">
+                                    <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
+                                </div>
+                            </div>
+                        </div>
+                        <div class="form-group row mb-0">
+                            <div class="col-md-6 offset-md-6">
+                                <button type="submit" class="btn btn-primary">
+                                    Update
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                </div>
+                <div class="row text-center">
+                    <div class="col-xs-12 text-center w-75 pwd-info">
+                        <p>* at least 8 chars with uppercase, lowercase and numbers</p>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+@endsection
+
+
+
+@section('extra')
+
+@endsection
+
+
+
+@section('css')
+<style>
+    .pwd-info {
+        font-size: 12px;
+    }
+</style>
+@endsection
+
+
+
+@section('js')
+<script>
+    $('#password').keyup(function() {
+        if($('#password').val() != $('#password-confirm').val()) {
+            $('#password-confirm').setCustomValidity("Passwords don't match");
+        } else {
+            $('#password-confirm').setCustomValidity('');
+        }
+    });
+    $('#password-confirm').keyup(function() {
+        if($('#password').val() != $('#password-confirm').val()) {
+            $('#password-confirm').setCustomValidity("Passwords don't match");
+        } else {
+            $('#password-confirm').setCustomValidity('');
+        }
+    });
+</script>
+@endsection

+ 8 - 3
routes/web.php

@@ -8,14 +8,14 @@ Route::get('/', function () {
 
 
 Auth::routes(['register' => false]);
 Auth::routes(['register' => false]);
 
 
-Route::group(['prefix' => 'tools'], function () use ($router) {
+Route::group(['prefix' => 'tools'], function () {
     Route::get('/start/{servercode}','ApisController@start');
     Route::get('/start/{servercode}','ApisController@start');
     Route::get('/finalize/{servercode}','ApisController@finalize');
     Route::get('/finalize/{servercode}','ApisController@finalize');
     Route::get('/status/{servercode}','ApisController@status');
     Route::get('/status/{servercode}','ApisController@status');
     Route::get('/ping/{servercode}','ApisController@ping');
     Route::get('/ping/{servercode}','ApisController@ping');
 });
 });
 
 
-Route::group(['prefix' => 'sh'], function () use ($router) {
+Route::group(['prefix' => 'sh'], function () {
     Route::get('/go/{servercode}','ShellController@install');
     Route::get('/go/{servercode}','ShellController@install');
     Route::get('/ha/{servercode}','ShellController@hostadd');
     Route::get('/ha/{servercode}','ShellController@hostadd');
     Route::get('/hd/{servercode}','ShellController@hostdel');
     Route::get('/hd/{servercode}','ShellController@hostdel');
@@ -30,6 +30,11 @@ Route::group(['prefix' => 'sh'], function () use ($router) {
     Route::get('/nx','ShellController@nginx');
     Route::get('/nx','ShellController@nginx');
 });
 });
 
 
-Route::group(['middleware' => 'auth'], function () use ($router) {
+Route::group(['middleware' => 'auth'], function () {
     Route::get('/dashboard', 'DashboardController@index');
     Route::get('/dashboard', 'DashboardController@index');
+    Route::group(['prefix' => 'settings'], function () {
+        Route::get('/', 'SetupController@index');
+        Route::post('/profile', 'SetupController@profile');
+        Route::post('/password', 'SetupController@password');
+    });
 });
 });