added some icons, small cleaning, create table page stub, table controller
This commit is contained in:
@@ -23,6 +23,8 @@ class HomeController extends Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('home');
|
||||
$tables = \Auth::user()->tables()->paginate(10);
|
||||
|
||||
return view('home')->with(compact('tables'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class TableController extends Controller
|
||||
{
|
||||
/**
|
||||
* SHow a form for creating a new table
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
return view('table.create');
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||
*/
|
||||
trait Reportable
|
||||
{
|
||||
public function bootReportable()
|
||||
public static function bootReportable()
|
||||
{
|
||||
static::deleting(function(Reportable $self) {
|
||||
$self->reportsOf()->delete();
|
||||
|
||||
@@ -7,6 +7,7 @@ use App\Models\Concerns\Reportable;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notification;
|
||||
|
||||
/**
|
||||
* A user in the application
|
||||
@@ -126,4 +127,13 @@ class User extends Authenticatable
|
||||
{
|
||||
$this->followedDiscussions()->detach($table);
|
||||
}
|
||||
|
||||
public function fakeTables()
|
||||
{
|
||||
return [
|
||||
(object)['title' => 'Table 1'],
|
||||
(object)['title' => 'Table 2'],
|
||||
(object)['title' => 'Table 3']
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+47
@@ -0,0 +1,47 @@
|
||||
/*!
|
||||
* Based on Fork Awesome 1.1.0, originaly by Dave Gandy - http://forkawesome.github.io/Fork-Awesome/
|
||||
* License - http://forkawesome.github.io/Fork-Awesome//license (Font: SIL OFL 1.1, CSS: MIT License)
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'fa-dtbl-1';
|
||||
src: url('./fa-dtbl-1.eot?v=1.1.0');
|
||||
src: url('./fa-dtbl-1.eot?#iefix&v=1.1.0') format('embedded-opentype'),
|
||||
url('./fa-dtbl-1.woff2?v=1.1.0') format('woff2'),
|
||||
url('./fa-dtbl-1.ttf?v=1.1.0') format('truetype'),
|
||||
url('./fa-dtbl-1.svg?v=1.1.0#fa-dtbl-1') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||
@font-face {
|
||||
font-family: "fa-dtbl-1";
|
||||
src: url("./fa-dtbl-1.svg#fa-dtbl-1") format("svg");
|
||||
}
|
||||
}
|
||||
|
||||
[data-icon]::before { content: attr(data-icon); }
|
||||
|
||||
[data-icon]::before, [class^="fa-"]::before, [class*=" fa-"]::before {
|
||||
display: inline-block;
|
||||
font-family: "fa-dtbl-1";
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
line-height: 1;
|
||||
text-decoration: inherit;
|
||||
font-size: inherit;
|
||||
text-rendering: optimizeLegibility;
|
||||
text-transform: none;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
.fa-facebook-square::before { content: "\f100"; }
|
||||
.fa-github::before { content: "\f101"; }
|
||||
.fa-google::before { content: "\f102"; }
|
||||
.fa-sign-in::before { content: "\f103"; }
|
||||
.fa-sign-out::before { content: "\f104"; }
|
||||
.fa-user-circle-o::before { content: "\f105"; }
|
||||
.fa-user-plus::before { content: "\f106"; }
|
||||
Binary file not shown.
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<!--
|
||||
2018-7-16: Created with FontForge (http://fontforge.org)
|
||||
-->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||
<metadata>
|
||||
Created by FontForge 20170805 at Mon Jul 16 22:14:13 2018
|
||||
By ondra
|
||||
The Fork Awesome font is licensed under the SIL OFL 1.1 (http://scripts.sil.org/OFL). Fork Awesome is a fork based of off Font Awesome 4.7.0 by Dave Gandy. More info on licenses at https://forkawesome.github.io
|
||||
</metadata>
|
||||
<defs>
|
||||
<font id="fa-dtbl-1" horiz-adv-x="1536" >
|
||||
<font-face
|
||||
font-family="fa-dtbl-1"
|
||||
font-weight="400"
|
||||
font-stretch="normal"
|
||||
units-per-em="1792"
|
||||
panose-1="2 0 5 3 0 0 0 0 0 0"
|
||||
ascent="1536"
|
||||
descent="-256"
|
||||
bbox="0 -256 2048 1536"
|
||||
underline-thickness="89.6"
|
||||
underline-position="-179.2"
|
||||
unicode-range="U+0020-F106"
|
||||
/>
|
||||
<missing-glyph />
|
||||
<glyph glyph-name="space" unicode=" " horiz-adv-x="200"
|
||||
/>
|
||||
<glyph glyph-name="facebook-square" unicode=""
|
||||
d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-188v595h199l30 232h-229v148c0 67 18 112 115 112l122 1v207c-21 3 -94 9 -178 9c-177 0 -299 -108 -299 -306v-171h-200v-232h200v-595h-532c-159 0 -288 129 -288 288v960c0 159 129 288 288 288
|
||||
h960z" />
|
||||
<glyph glyph-name="github" unicode=""
|
||||
d="M768 1408c424 0 768 -344 768 -768c0 -339 -220 -627 -525 -729c-39 -7 -53 17 -53 37c0 25 1 108 1 211c0 72 -24 118 -52 142c171 19 351 84 351 379c0 84 -30 152 -79 206c8 20 34 98 -8 204c-64 20 -211 -79 -211 -79c-61 17 -127 26 -192 26s-131 -9 -192 -26
|
||||
c0 0 -147 99 -211 79c-42 -106 -16 -184 -8 -204c-49 -54 -79 -122 -79 -206c0 -294 179 -360 350 -379c-22 -20 -42 -54 -49 -103c-44 -20 -156 -54 -223 64c-42 73 -118 79 -118 79c-75 1 -5 -47 -5 -47c50 -23 85 -112 85 -112c45 -137 259 -91 259 -91
|
||||
c0 -64 1 -124 1 -143c0 -20 -14 -44 -53 -37c-305 102 -525 390 -525 729c0 424 344 768 768 768zM291 305c-2 -4 -8 -5 -13 -2c-6 3 -9 8 -7 12c2 3 7 4 13 2c6 -3 9 -8 7 -12zM322 271c-4 -4 -11 -2 -16 3c-5 6 -6 13 -2 16c4 4 11 2 16 -3c5 -6 6 -13 2 -16zM352 226
|
||||
c-4 -3 -12 0 -17 7s-5 15 0 18c5 4 13 1 17 -6c5 -7 5 -15 0 -19zM394 184c-4 -5 -13 -4 -20 3c-7 6 -9 15 -4 19c4 5 13 4 20 -3c6 -6 8 -15 4 -19zM451 159c-2 -6 -11 -9 -19 -6c-9 2 -15 9 -13 15s11 9 19 7c9 -3 15 -10 13 -16zM514 154c0 -6 -7 -11 -16 -11
|
||||
c-10 -1 -17 4 -17 11c0 6 7 11 16 11c9 1 17 -4 17 -11zM572 164c1 -6 -5 -12 -14 -14s-17 2 -18 8c-1 7 5 13 14 15c9 1 17 -3 18 -9z" />
|
||||
<glyph glyph-name="google" unicode="" horiz-adv-x="1505"
|
||||
d="M768 750h725c7 -39 12 -77 12 -128c0 -438 -294 -750 -737 -750c-425 0 -768 343 -768 768s343 768 768 768c207 0 381 -76 515 -201l-209 -201c-57 55 -157 119 -306 119c-262 0 -476 -217 -476 -485s214 -485 476 -485c304 0 418 218 436 331h-436v264z" />
|
||||
<glyph glyph-name="sign-in" unicode=""
|
||||
d="M1184 640c0 -17 -7 -33 -19 -45l-544 -544c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v288h-448c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h448v288c0 35 29 64 64 64c17 0 33 -7 45 -19l544 -544c12 -12 19 -28 19 -45zM1536 992v-704c0 -159 -129 -288 -288 -288
|
||||
h-320c-17 0 -32 15 -32 32c0 28 -13 96 32 96h320c88 0 160 72 160 160v704c0 88 -72 160 -160 160h-288c-25 0 -64 -5 -64 32c0 28 -13 96 32 96h320c159 0 288 -129 288 -288z" />
|
||||
<glyph glyph-name="sign-out" unicode="" horiz-adv-x="1568"
|
||||
d="M640 96c0 -28 13 -96 -32 -96h-320c-159 0 -288 129 -288 288v704c0 159 129 288 288 288h320c17 0 32 -15 32 -32c0 -28 13 -96 -32 -96h-320c-88 0 -160 -72 -160 -160v-704c0 -88 72 -160 160 -160h288c25 0 64 5 64 -32zM1568 640c0 -17 -7 -33 -19 -45l-544 -544
|
||||
c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v288h-448c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h448v288c0 35 29 64 64 64c17 0 33 -7 45 -19l544 -544c12 -12 19 -28 19 -45z" />
|
||||
<glyph glyph-name="user-circle-o" unicode="" horiz-adv-x="1792"
|
||||
d="M896 1536c495 0 896 -401 896 -896c0 -492 -399 -896 -896 -896c-496 0 -896 403 -896 896c0 495 401 896 896 896zM1515 185c93 128 149 285 149 455c0 423 -345 768 -768 768s-768 -345 -768 -768c0 -170 56 -327 149 -455c36 179 123 327 306 327
|
||||
c81 -79 191 -128 313 -128s232 49 313 128c183 0 270 -148 306 -327zM1280 832c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384s384 -172 384 -384z" />
|
||||
<glyph glyph-name="user-plus" unicode="" horiz-adv-x="2048"
|
||||
d="M704 640c-212 0 -384 172 -384 384s172 384 384 384s384 -172 384 -384s-172 -384 -384 -384zM1664 512h352c17 0 32 -15 32 -32v-192c0 -17 -15 -32 -32 -32h-352v-352c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v352h-352c-17 0 -32 15 -32 32v192
|
||||
c0 17 15 32 32 32h352v352c0 17 15 32 32 32h192c17 0 32 -15 32 -32v-352zM928 288c0 -70 58 -128 128 -128h256v-238c-49 -36 -111 -50 -171 -50h-874c-160 0 -267 96 -267 259c0 226 53 573 346 573c16 0 27 -7 39 -17c98 -75 193 -122 319 -122s221 47 319 122
|
||||
c12 10 23 17 39 17c85 0 160 -32 217 -96h-223c-70 0 -128 -58 -128 -128v-192z" />
|
||||
</font>
|
||||
</defs></svg>
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
Binary file not shown.
Binary file not shown.
+8
-1
@@ -1,6 +1,6 @@
|
||||
|
||||
// Body
|
||||
$body-bg: #f5f8fa;
|
||||
$body-bg: white;//$gray-300;
|
||||
|
||||
// Typography
|
||||
$font-family-sans-serif: "IBM Plex Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
|
||||
@@ -12,3 +12,10 @@ $link-decoration: none;
|
||||
$link-hover-color: darken($link-color, 15%);
|
||||
$link-hover-decoration: underline;
|
||||
|
||||
$card-cap-bg: lighten($primary, 5);
|
||||
$card-border-color: $primary;
|
||||
//$card-border-width: 2px;
|
||||
$card-border-radius: 5px;
|
||||
$card-inner-border-radius: 2px;
|
||||
|
||||
$list-group-hover-bg: rgba($primary, .1);
|
||||
|
||||
Vendored
+14
-3
@@ -1,6 +1,6 @@
|
||||
|
||||
// Fonts
|
||||
@import url("https://fonts.googleapis.com/css?family=Raleway:300,400,600");
|
||||
//@import url("https://fonts.googleapis.com/css?family=Raleway:300,400,600");
|
||||
|
||||
// Variables
|
||||
@import "bst-base";
|
||||
@@ -9,11 +9,22 @@
|
||||
|
||||
.page-navbar {
|
||||
background: white;
|
||||
border-bottom: 1px solid $gray-400;
|
||||
border-bottom: 1px solid $primary;
|
||||
|
||||
box-shadow: 0 -3px 8px rgba(black, 1);
|
||||
}
|
||||
|
||||
.page-footer {
|
||||
font-size: 95%;
|
||||
background: $body-bg;
|
||||
border-top: 2px solid white;
|
||||
border-top: 2px dotted $gray-200;
|
||||
}
|
||||
|
||||
.card-header {
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.card {
|
||||
box-shadow: 0 2px 3px rgba(black, .3);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">Privacy Statement</div>
|
||||
|
||||
<div class="card-body">
|
||||
<p>
|
||||
<i>datatable.directory</i> does not collect anything beyond what users
|
||||
themselves enter in the application, plus limited data from OAuth providers
|
||||
when a social login is used. User IP addresses and other data, such as the
|
||||
user agent, are briefly stored in the web server log as a byproduct of the
|
||||
server operation, and serve debugging purposes only.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We do not share private data with any third parties.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -53,10 +53,14 @@
|
||||
<div class="col-md-8 offset-md-4">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
{{ __('Login') }}
|
||||
</button>
|
||||
</button>{{--
|
||||
|
||||
<a class="btn btn-link" href="{{ route('password.request') }}">
|
||||
--}}<a class="btn btn-link" href="{{ route('password.request') }}">
|
||||
{{ __('Forgot Your Password?') }}
|
||||
</a>{{--
|
||||
|
||||
--}}<a class="btn btn-link pl-0" href="{{ route('register') }}">
|
||||
{{ __('Register') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -65,29 +69,26 @@
|
||||
|
||||
<div class="card-footer bg-white">
|
||||
<div class="form-group row mb-0">
|
||||
<span class="col-md-2 col-form-label text-md-right">{{ __('Log in with') }}</span>
|
||||
<span class="col-md-2 col-form-label text-md-right">{{ __('Login with') }}</span>
|
||||
|
||||
<div class="col-md-8">
|
||||
@set('services.oauth_providers.github.client_id')
|
||||
<a type="submit" href="{{route('oauth-github-authorize')}}" class="btn btn-dark">
|
||||
<i class="fa-github pr-1"></i>
|
||||
{{ __('GitHub') }}
|
||||
</a>
|
||||
@endset
|
||||
|
||||
{{--@set('services.oauth_providers.stack.client_id')
|
||||
<a type="submit" href="{{route('oauth-stack-authorize')}}" class="btn btn-dark">
|
||||
{{ __('StackOverflow') }}
|
||||
</a>
|
||||
@endset--}}
|
||||
|
||||
@set('services.oauth_providers.google.client_id')
|
||||
<a type="submit" href="{{route('oauth-google-authorize')}}" class="btn btn-dark">
|
||||
<i class="fa-google pr-1"></i>
|
||||
{{ __('Google') }}
|
||||
</a>
|
||||
@endset
|
||||
|
||||
@set('services.oauth_providers.facebook.client_id')
|
||||
<a type="submit" href="{{route('oauth-facebook-authorize')}}" class="btn btn-dark">
|
||||
<i class="fa-facebook-square pr-1"></i>
|
||||
{{ __('Facebook') }}
|
||||
</a>
|
||||
@endset
|
||||
|
||||
@@ -71,12 +71,11 @@
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="card-footer text-muted">
|
||||
You can also log in with
|
||||
<div class="card-footer bg-white text-muted">
|
||||
You can also register by logging in with
|
||||
<a href="{{route('oauth-google-authorize')}}">Google</a>,
|
||||
<a href="{{route('oauth-github-authorize')}}">GitHub</a>,
|
||||
or <a href="{{route('oauth-facebook-authorize')}}">Facebook</a>,
|
||||
without the need to register.
|
||||
or <a href="{{route('oauth-facebook-authorize')}}">Facebook</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,23 +1,50 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="container">
|
||||
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">Dashboard</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
{{-- Dash card --}}
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">Dashboard</div>
|
||||
|
||||
You are logged in!
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<p>You are logged in!</p>
|
||||
|
||||
<p>blabla dashboard things ...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Table list card --}}
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<span class="d-inline-block">Your Tables</span>
|
||||
<a href="{{route('table.create')}}" class="btn btn-sm btn-outline-light float-right"
|
||||
style="margin-top:-2px; margin-bottom:-2px;">New</a>
|
||||
</div>
|
||||
|
||||
<div class="list-group list-group-flush">
|
||||
@if(count($tables) == 0)
|
||||
<span class="list-group-item">No tables yet.</span>
|
||||
@else
|
||||
@foreach($tables as $table)
|
||||
<a class="list-group-item list-group-item-action" href="">{{ $table->title }}</a>
|
||||
@endforeach
|
||||
{{ $tables->links() }}
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@@ -1,89 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<!-- CSRF Token -->
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
<!-- CSRF Token -->
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>{{ config('app.name', 'Laravel') }}</title>
|
||||
<title>{{ config('app.name', 'Laravel') }}</title>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="{{ asset('js/app.js') }}" defer></script>
|
||||
<!-- Scripts -->
|
||||
<script src="{{ asset('js/app.js') }}" defer></script>
|
||||
|
||||
<!-- Styles -->
|
||||
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
|
||||
<!-- Styles -->
|
||||
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
|
||||
<link href="{{ asset('fonts/fa-dtbl-1.css') }}" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
<nav class="navbar navbar-expand-md navbar-light page-navbar">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="{{ url('/') }}">
|
||||
{{ config('app.name', 'Laravel') }}
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div id="app">
|
||||
@include('layouts.main-nav')
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<!-- Left Side Of Navbar -->
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<main class="py-4">
|
||||
@yield('content')
|
||||
</main>
|
||||
|
||||
</ul>
|
||||
|
||||
<!-- Right Side Of Navbar -->
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<!-- Authentication Links -->
|
||||
@guest
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
|
||||
</li>
|
||||
@else
|
||||
<li class="nav-item dropdown">
|
||||
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
|
||||
{{ Auth::user()->name }} <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item" href="{{ route('logout') }}"
|
||||
onclick="event.preventDefault();
|
||||
document.getElementById('logout-form').submit();">
|
||||
{{ __('Logout') }}
|
||||
</a>
|
||||
|
||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
|
||||
@csrf
|
||||
</form>
|
||||
</div>
|
||||
</li>
|
||||
@endguest
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main class="py-4">
|
||||
@yield('content')
|
||||
</main>
|
||||
|
||||
<footer class="page-footer text-muted mt-2">
|
||||
<div class="container py-2 py-md-4">
|
||||
<ul class="d-flex p-0">
|
||||
<li class="d-inline-block mr-3"><a href="/about/privacy">Privacy Statement</a>
|
||||
<li class="d-inline-block mr-3"><a href="/about/terms">Terms of Service</a>
|
||||
</ul>
|
||||
<p>
|
||||
Maintained by <a href="https://www.ondrovo.com/">Ondřej Hruška</a>
|
||||
(<a href="mailto:ondra@ondrovo.com">ondra@ondrovo.com</a>).<br>
|
||||
Data tables are licensed CC0 (public domain), unless specified otherwise.
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
@include('layouts.footer')
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<footer class="page-footer text-muted mt-2">
|
||||
<div class="container py-2 py-md-4">
|
||||
<ul class="d-flex p-0">
|
||||
<li class="d-inline-block mr-3"><a href="/about/privacy">Privacy Statement</a>
|
||||
<li class="d-inline-block mr-3"><a href="/about/terms">Terms of Service</a>
|
||||
</ul>
|
||||
<p>
|
||||
Maintained by <a href="https://www.ondrovo.com/">Ondřej Hruška</a>
|
||||
(<a href="mailto:ondra@ondrovo.com">ondra@ondrovo.com</a>).<br>
|
||||
Data tables are licensed CC0 (public domain), unless specified otherwise.
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
@@ -0,0 +1,57 @@
|
||||
<nav class="navbar navbar-expand-md navbar-light page-navbar">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="{{ url('/') }}">
|
||||
{{ config('app.name', 'Laravel') }}
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
|
||||
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<!-- Left Side Of Navbar -->
|
||||
<ul class="navbar-nav mr-auto">
|
||||
|
||||
</ul>
|
||||
|
||||
<!-- Right Side Of Navbar -->
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<!-- Authentication Links -->
|
||||
@guest
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('login') }}">
|
||||
<i class="fa-sign-in pr-1"></i>
|
||||
{{ __('Login') }}
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('register') }}">
|
||||
<i class="fa-user-plus pr-1"></i>
|
||||
{{ __('Register') }}
|
||||
</a>
|
||||
</li>
|
||||
@else
|
||||
<li class="nav-item dropdown">
|
||||
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown"
|
||||
aria-haspopup="true" aria-expanded="false" v-pre>
|
||||
<i class="fa-user-circle-o pr-1"></i>
|
||||
{{ Auth::user()->name }} <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item" href="{{ route('logout') }}"
|
||||
onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
|
||||
<i class="fa-sign-out pr-1"></i>
|
||||
{{ __('Logout') }}
|
||||
</a>
|
||||
|
||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
|
||||
@csrf
|
||||
</form>
|
||||
</div>
|
||||
</li>
|
||||
@endguest
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -1,37 +0,0 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">Privacy Statement</div>
|
||||
|
||||
<div class="card-body">
|
||||
<p>
|
||||
<i>datatable.directory</i> collects visit counts the purpose of submission
|
||||
popularity ranking and internal statistics. User IP addresses and other
|
||||
data, such as the user agent string, is briefly stored in the web server
|
||||
log. This data is the byproduct of the server operation and serves debugging
|
||||
purposes only.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We store users' e-mail addresses for the purpose of login authentication,
|
||||
together with other profile information entered by the user. Passwords
|
||||
are securely hashed in the database; nonetheless users are encouraged to
|
||||
use a unique password generated by a password manager, or use one of the
|
||||
social login options, which removes the use of a password altogether.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We do not share any data with any third parties, and do not use advertising
|
||||
that would compromise user privacy. The website is supported entirely by
|
||||
donations.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,12 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
{{-- Dash card --}}
|
||||
<div class="col-md-8">
|
||||
asdf
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
use SocialNorm\Exceptions\ApplicationRejectedException;
|
||||
use SocialNorm\Exceptions\InvalidAuthorizationCodeException;
|
||||
use SocialNorm\ProviderUser;
|
||||
|
||||
Auth::routes();
|
||||
|
||||
// ----------------- SOCIAL LOGIN --------------------
|
||||
|
||||
function _loginVia($method) {
|
||||
try {
|
||||
SocialAuth::login($method, function (\App\Models\User $user, ProviderUser $details) {
|
||||
// update user name first time user logs in
|
||||
if (!$user->exists) {
|
||||
$user->name = $details->nickname ?: ($details->full_name ?: $details->email);
|
||||
}
|
||||
|
||||
// set e-mail from provider data, only if user e-mail is empty
|
||||
if ("$user->email" === "") {
|
||||
$user->email = $details->email;
|
||||
}
|
||||
});
|
||||
} catch (ApplicationRejectedException $e) {
|
||||
abort(401, $e->getMessage());
|
||||
} catch (InvalidAuthorizationCodeException $e) {
|
||||
abort(401, $e->getMessage());
|
||||
}
|
||||
return Redirect::intended();
|
||||
};
|
||||
|
||||
|
||||
Route::get('/auth/github/authorize', function() {
|
||||
return SocialAuth::authorize('github');
|
||||
})->name('oauth-github-authorize');
|
||||
|
||||
Route::get('/auth/github/callback', function() {
|
||||
return _loginVia('github');
|
||||
})->name('oauth-github-callback');
|
||||
|
||||
|
||||
Route::get('/auth/google/authorize', function() {
|
||||
return SocialAuth::authorize('google');
|
||||
})->name('oauth-google-authorize');
|
||||
|
||||
Route::get('/auth/google/callback', function() {
|
||||
return _loginVia('google');
|
||||
})->name('oauth-google-callback');
|
||||
|
||||
|
||||
Route::get('/auth/facebook/authorize', function() {
|
||||
return SocialAuth::authorize('facebook');
|
||||
})->name('oauth-facebook-authorize');
|
||||
|
||||
Route::get('/auth/facebook/callback', function() {
|
||||
return _loginVia('facebook');
|
||||
})->name('oauth-facebook-callback');
|
||||
|
||||
/*
|
||||
Route::get('/auth/stack/authorize', function() {
|
||||
return SocialAuth::authorize('stack');
|
||||
})->name('oauth-stack-authorize');
|
||||
|
||||
Route::get('/auth/stack/callback', function() {
|
||||
return _loginVia('stack');
|
||||
})->name('oauth-stack-callback');
|
||||
*/
|
||||
+4
-65
@@ -1,7 +1,4 @@
|
||||
<?php
|
||||
use SocialNorm\Exceptions\ApplicationRejectedException;
|
||||
use SocialNorm\Exceptions\InvalidAuthorizationCodeException;
|
||||
use SocialNorm\ProviderUser;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -14,14 +11,14 @@ use SocialNorm\ProviderUser;
|
||||
|
|
||||
*/
|
||||
|
||||
Auth::routes();
|
||||
require "login.php";
|
||||
|
||||
Route::get('/about/terms', function () {
|
||||
return view('terms');
|
||||
return view('about.terms');
|
||||
});
|
||||
|
||||
Route::get('/about/privacy', function () {
|
||||
return view('privacy');
|
||||
return view('about.privacy');
|
||||
});
|
||||
|
||||
|
||||
@@ -34,62 +31,4 @@ Route::get('/', function () {
|
||||
|
||||
Route::get('/home', 'HomeController@index')->name('home');
|
||||
|
||||
// ----------------- SOCIAL LOGIN --------------------
|
||||
|
||||
function _loginVia($method) {
|
||||
try {
|
||||
SocialAuth::login($method, function (\App\Models\User $user, ProviderUser $details) {
|
||||
// update user name first time user logs in
|
||||
if (!$user->exists) {
|
||||
$user->name = $details->nickname ?: ($details->full_name ?: $details->email);
|
||||
}
|
||||
|
||||
// set e-mail from provider data, only if user e-mail is empty
|
||||
if ("$user->email" === "") {
|
||||
$user->email = $details->email;
|
||||
}
|
||||
});
|
||||
} catch (ApplicationRejectedException $e) {
|
||||
abort(401, $e->getMessage());
|
||||
} catch (InvalidAuthorizationCodeException $e) {
|
||||
abort(401, $e->getMessage());
|
||||
}
|
||||
return Redirect::intended();
|
||||
};
|
||||
|
||||
|
||||
Route::get('/auth/github/authorize', function() {
|
||||
return SocialAuth::authorize('github');
|
||||
})->name('oauth-github-authorize');
|
||||
|
||||
Route::get('/auth/github/callback', function() {
|
||||
return _loginVia('github');
|
||||
})->name('oauth-github-callback');
|
||||
|
||||
|
||||
Route::get('/auth/google/authorize', function() {
|
||||
return SocialAuth::authorize('google');
|
||||
})->name('oauth-google-authorize');
|
||||
|
||||
Route::get('/auth/google/callback', function() {
|
||||
return _loginVia('google');
|
||||
})->name('oauth-google-callback');
|
||||
|
||||
|
||||
Route::get('/auth/facebook/authorize', function() {
|
||||
return SocialAuth::authorize('facebook');
|
||||
})->name('oauth-facebook-authorize');
|
||||
|
||||
Route::get('/auth/facebook/callback', function() {
|
||||
return _loginVia('facebook');
|
||||
})->name('oauth-facebook-callback');
|
||||
|
||||
/*
|
||||
Route::get('/auth/stack/authorize', function() {
|
||||
return SocialAuth::authorize('stack');
|
||||
})->name('oauth-stack-authorize');
|
||||
|
||||
Route::get('/auth/stack/callback', function() {
|
||||
return _loginVia('stack');
|
||||
})->name('oauth-stack-callback');
|
||||
*/
|
||||
Route::get('/table/create', 'TableController@create')->name('table.create');
|
||||
|
||||
Reference in New Issue
Block a user