implemented social identities management page + pw editing page. probably need to fix backend

This commit is contained in:
2018-07-25 23:07:11 +02:00
parent 57911377ef
commit 2e075799f2
35 changed files with 541 additions and 301 deletions
@@ -0,0 +1,28 @@
<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->viewPage}}">
<span class="d-block row">
<span class="d-inline-block col-10">
<i class="fa-table fa-pr"></i>{{ $table->title }}
</span>{{--
--}}<span class="d-inline-block col-2 small text-right">
{{ $table->revision->row_count }} rows
</span>
</span>
<span class="d-block small row">
<span class="d-inline-block col-8">
{{ ellipsis($table->description, 215) }}
</span>{{--
--}}<span class="d-inline-block col-4 text-right text-muted">
Last change {{ $table->updated_at->diffForHumans() }}
</span>
</span>
</a>
@endforeach
@endif
</div>
+33
View File
@@ -0,0 +1,33 @@
{{-- Profile edit form --}}
@extends('layouts.app')
@section('content')
<form method="POST" action="{{route('profile.store')}}" class="row justify-content-center"
aria-label="Your Profile">
@csrf
<div class="col-md-10">
@php(Widget::setLayout(3, 7))
{!! Widget::header(1, 'Settings') !!}
{!! Widget::text('title', 'Display Name')->value($user->title)->required()->autofocus()
->help('Shown on your profile page, tables, comments, etc.') !!}
{!! Widget::textarea('bio', 'About Me')->value($user->bio)->height('8em')
->help('This is shown in your profile box') !!}
{!! Widget::text('website', 'Website')->value($user->website)->prepend('<i class="fa-globe"></i>')
->help('Custom clickable link shown on your profile page.') !!}
<div class="row form-group">
<div class="col-md-7 offset-md-3">
<button type="submit" class="btn btn-primary">
<i class="fa-save pr-2"></i>Save Changes
</button>
</div>
</div>
</div>
</form>
@endsection
+140
View File
@@ -0,0 +1,140 @@
{{-- Profile edit form --}}
@extends('layouts.app')
@section('content')
@php(Widget::setLayout(3, 7))
<form method="POST" action="{{route('profile.store')}}" class="row justify-content-center">
@csrf
<div class="col-md-10">
{!! Widget::header(1, 'Login Settings') !!}
{!! Widget::par('Confirm using the save button at the bottom.') !!}
</div>
<div class="col-md-10 mt-3">
{!! Widget::header(2, 'Identifiers') !!}
{!! Widget::par('Caution: Changing username will alter URLs of your tables.') !!}
{!! Widget::text('name', 'Username')->value($user->name)->required()
->prepend('@')
->help('This is part of your vanity URL, and can be also used to login') !!}
{!! Widget::par('E-mail change will apply after you confirm the new address.
We will send you a confirmation link when you submit the form.', 'text-justify') !!}
{!! Widget::email('email', 'E-Mail Address')->value($user->email)->required()
->help('Used to login and for password resets.') !!}
</div>
<div class="col-md-10 mt-3">
{!! Widget::header(2, 'Password Change') !!}
{!! Widget::par('Leave empty to keep your current password (if any).') !!}
{!! Widget::password('new_password', 'New Password') !!}
{!! Widget::password('new_password_confirmation', 'Confirm New Password') !!}
</div>
<div class="col-md-10 mt-3">
<div class="row form-group">
<div class="col-md-7 offset-md-3">
<button type="submit" class="btn btn-primary">
<i class="fa-save pr-2"></i>Apply Changes
</button>
</div>
</div>
</div>
<div class="col-md-10 mt-3">
{!! Widget::header(2, 'OAuth2 Logins') !!}
{!! Widget::par('
Here you can remove identities you do not wish to use anymore.
To completely revoke the authorization, also remove the app
from your provider\'s settings.
', 'text-justify')!!}
<?php
$icons = [
'github' => 'github',
'facebook' => 'facebook-square',
'google' => 'google',
];
?>
@if(!count($user->socialIdentities))
<div class="row form-group">
<div class="col-md-7 offset-md-3 border border-primary border-dashed rounded">
No identities connected.
</div>
</div>
@else
@foreach($user->socialIdentities as $identity)
<div class="row form-group">
<div class="col-md-3 col-form-label text-md-right">
<a href="{{route('forget-identity', ['id' => $identity->getKey()])}}" class="btn btn-danger" role="button">Forget</a>
</div>
<div class="col-md-7 border border-primary rounded p-1 pl-0">
<table>
<tr>
<td rowspan=4>
<i class="fa-{{ $icons[$identity->provider] }} fa-huge py-3 px-4"></i>
</td>
<th>Nickname</th>
<td class="pl-2">{{ $identity->nick_name }}</td>
</tr>
<tr>
<th>Full Name</th>
<td class="pl-2">{{ $identity->full_name }}</td>
</tr>
<tr>
<th>E-Mail</th>
<td class="pl-2">{{ $identity->email }}</td>
</tr>
<tr>
<th>User ID</th>
<td class="pl-2">{{ $identity->provider_user_id }}</td>
</tr>
</table>
</div>
</div>
@endforeach
@endif
{!! Widget::par(
'Click the buttons below to add a new OAuth2 identity.
You will be redirected to the authorization form.',
'text-justify'
)!!}
<div class="row form-group">
<div class="col-md-3 col-form-label text-md-right">
Add identity
</div>
<div class="col-md-7">
@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.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
</div>
</div>
</div>
</form>
@endsection
+92
View File
@@ -0,0 +1,92 @@
{{-- User's dashboard / profile page --}}
@extends('layouts.app')
@php
/** @var \App\Models\Table[] $tables */
/** @var \App\Models\User $user */
@endphp
@section('content')
<div class="row justify-content-center">
{{-- Dash card --}}
<div class="col-md-4">
<div class="card">
<div class="card-header card-header-extra">
<i class="fa-user-circle-o fa-pr fa-large"></i>{{ $user->title }}
@if(authed() && user()->is($user))
<a href="{{route('profile.edit')}}" class="btn ml-auto">Edit</a>
@endif
</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
@if($user->bio)
@if(mb_strlen($user->bio) > 250)
<p id="bio-short" aria-hidden=true>
{{mb_substr($user->bio, 0, 250)}}…
<a class="text-muted small" title="Show more" href="#" onclick="$('#bio-short').addClass('hidden'); $('#bio-full').removeClass('hidden'); return false;">
[more]
</a>
</p>
<p id="bio-full" class="hidden">
{{ $user->bio }}
<a class="text-muted small" title="Collapse" href="#" onclick="$('#bio-full').addClass('hidden'); $('#bio-short').removeClass('hidden'); return false;">
[collapse]
</a>
</p>
@else
<p>
{{ $user->bio }}
</p>
@endif
@endif
@if($user->website)
<p>
<i class="fa-link fa-pr" aria-label="User's Website" title="User's Website"></i>{{--
--}}<a href="{{ $user->website }}">{{ $user->website }}</a>
</p>
@endif
<p class="mb-0">
<i class="fa-calendar fa-pr" aria-hidden=true></i>{{--
--}}Joined {{ $user->created_at->diffForHumans() }}
</p>
</div>
</div>
</div>
{{-- Table list card --}}
<div class="col-md-8">
<div class="card">
<div class="card-header card-header-extra">
<span>
@if(authed() && user()->is($user))
Your Tables
@else
User's Tables
@endif
</span>
<nav class="ml-auto" aria-label="Pages of the table list">
{{ $tables->links(null, ['ulClass' => 'pagination-sm mb-0 pagination-outline-light']) }}
</nav>
@if(authed() && user()->is($user))
<a href="{{route('table.create')}}" class="btn ml-3">New</a>
@endif
</div>
@include('profile._table-list')
</div>
</div>
</div>
@endsection