Add Linphone basic theme

Remove email restriction
This commit is contained in:
Timothée Jaussoin 2020-04-30 17:32:05 +02:00
parent e889c5f9ef
commit ef88463e3d
11 changed files with 321 additions and 11 deletions

View file

@ -34,6 +34,10 @@ Allow the webserver user to write in the `storage/` directory:
chcon -R -t httpd_sys_rw_content_t storage/
If you have your SQLite DB setup in another directory don't forget to allow write rights as well
chcon -R -t httpd_sys_rw_content_t db.sqlite
If your external database is locate on a remote machine, you should also allow your webserver user to connect to remote hosts:
semanage port -a -t http_port_t -p tcp 3306 // Open remote connections on the MySQL port for example

View file

@ -19,7 +19,7 @@ class AccountEmailController extends Controller
public function update(Request $request)
{
$request->validate([
'email' => 'required|confirmed|email|unique:external.accounts,email',
'email' => 'required|confirmed|email',
]);
$account = $request->user();

92
flexiapi/public/css/style.css vendored Normal file
View file

@ -0,0 +1,92 @@
@font-face {
font-family: "Montserrat";
src: local("Montserrat Regular"), local("Montserrat-Regular"), url("https://fonts.gstatic.com/s/montserrat/v14/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2") format("woff2");
font-style: normal;
font-weight: 400;
unicode-range: U+0-FF, U+131, U+152-153, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: "Montserrat";
src: local("Montserrat Bold"), local("Montserrat-Bold"), url("https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_dJE3gnD_g.woff2") format("woff2");
font-style: normal;
font-weight: 700;
unicode-range: U+0-FF, U+131, U+152-153, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
body {
min-height: 100vh;
display: flex;
flex-direction: column;
font-family: "Montserrat";
}
body > div {
flex: 1 0 auto;
}
body > header::after,
body > footer::before {
background-image: url('/img/header.svg');
background-color: white;
background-position: bottom center;
background-repeat: repeat-x;
display: block;
height: 20rem;
width: 100%;
content: '';
}
@media screen and (max-width: 991px) {
nav.navbar,
body > header::after {
display: none;
}
}
h1, h2, h3, a, label {
color: #ff733b;
}
nav a {
color: white;
opacity: 0.8;
}
nav a:hover,
nav li.active a {
color: white;
opacity: 1;
}
input.form-control {
border-color: #9ec6dc;
}
.btn {
border: 1px solid #ff733b;
background-color: transparent;
color: #ff733b;
border-radius: 10rem;
}
body > footer,
body > header nav {
background-color: #ff733b;
}
body > footer {
color: white;
padding-bottom: 1rem;
text-align: center;
}
body > header::after {
margin-top: -5rem;
margin-bottom: -6rem;
}
body > footer::before {
background-image: url('/img/footer.svg');
height: 15rem;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

View file

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="footer.svg"
inkscape:version="1.0rc1 (09960d6f05, 2020-04-09)"
id="svg8"
version="1.1"
viewBox="0 0 481.34168 54.455357"
height="54.455357mm"
width="481.34167mm">
<defs
id="defs2" />
<sodipodi:namedview
inkscape:window-maximized="1"
inkscape:window-y="0"
inkscape:window-x="0"
inkscape:window-height="1027"
inkscape:window-width="1920"
fit-margin-bottom="-0.1"
fit-margin-right="-0.1"
fit-margin-left="-0.1"
fit-margin-top="-0.1"
inkscape:guide-bbox="true"
showguides="true"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="g26"
inkscape:document-units="mm"
inkscape:cy="93.503742"
inkscape:cx="1706.5646"
inkscape:zoom="1.98"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base">
<sodipodi:guide
id="guide42"
orientation="1,0"
position="-0.099990996,54.404172" />
<sodipodi:guide
id="guide44"
orientation="1,0"
position="481.44165,-0.099997858" />
<sodipodi:guide
id="guide887"
orientation="0,-1"
position="-0.099989072,34.783784" />
<sodipodi:guide
id="guide889"
orientation="0,-1"
position="-0.099989072,2.9868086" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(327.79435,-68.891666)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Calque 1">
<g
transform="translate(9.2773437e-7,54.308819)"
id="g26">
<path
sodipodi:nodetypes="ccccccccccc"
inkscape:connector-curvature="0"
id="path36"
d="m -327.89434,14.634035 121.11229,27.528297 62.6859,-9.362178 26.45833,-18.317307 55.766026,24.423076 92.807691,-24.016025 81.124273,17.952698 41.58713,-17.923294 1e-5,54.218899 h -481.54165 z"
style="fill:#ffb9a0;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccccccccc"
inkscape:connector-curvature="0"
id="path38"
d="m -327.89434,34.25442 109.3078,-14.886957 34.19231,10.875621 30.52885,-1.10639 33.3782,11.397435 53.560418,-14.363353 62.3326405,19.188794 40.0075805,-14.594673 66.241771,22.215676 39.77373,-25.273923 12.21834,6.54777 1e-5,34.883781 -481.54166,1e-6 z"
style="fill:#ff9e79;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccccccccc"
inkscape:connector-curvature="0"
id="path40"
d="m -327.89434,69.138201 v -3.086806 l 58.83344,-21.446755 69.19693,6.163152 31.34474,-3.720844 25.64423,9.362181 79.375,7.733974 58.9058785,-18.783533 50.7612655,3.720841 37.576541,-14.825991 43.835825,14.201899 26.06779,17.595076 1e-5,3.086803 z"
style="fill:#ff723b;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View file

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="header.svg"
inkscape:version="1.0rc1 (09960d6f05, 2020-04-09)"
id="svg8"
version="1.1"
viewBox="0 0 412.75 132.29167"
height="132.29167mm"
width="412.75mm">
<defs
id="defs2" />
<sodipodi:namedview
inkscape:window-maximized="1"
inkscape:window-y="0"
inkscape:window-x="0"
inkscape:window-height="1027"
inkscape:window-width="1920"
inkscape:guide-bbox="true"
showguides="true"
fit-margin-bottom="0"
fit-margin-right="0"
fit-margin-left="0"
fit-margin-top="0"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="347.48298"
inkscape:cx="890.08599"
inkscape:zoom="0.61"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#9cb9d0"
id="base">
<sodipodi:guide
id="guide847"
orientation="1,0"
position="-9.2773435e-07,1.7529296e-06" />
<sodipodi:guide
id="guide863"
orientation="0,-1"
position="0,58.61539" />
<sodipodi:guide
id="guide865"
orientation="0,-1"
position="0,37.04167" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(175.38095,-161.39583)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Calque 1">
<rect
y="161.39583"
x="-175.38095"
height="132.29167"
width="412.75"
id="rect885"
style="fill:#9cb9d0;fill-opacity:1;stroke:none;stroke-width:0.264583" />
<path
inkscape:connector-curvature="0"
id="path861"
d="m -175.38095,246.0625 106.647434,-21.98077 81.817307,22.38782 44.368589,-21.98077 30.935898,19.53846 1.628198,49.2532 -265.397426,0.40706 z"
style="fill:#bbcfe0;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" />
<path
sodipodi:nodetypes="cccccccccccccc"
inkscape:connector-curvature="0"
id="path857"
d="m -175.38095,235.07211 45.99679,22.79487 55.358977,-20.35256 33.378206,13.02564 54.544872,-17.09615 46.403844,14.24679 27.679488,-11.80449 26.458333,1.62821 29.71474,-10.17628 45.99681,6.51282 47.46066,1.22115 -0.24273,58.61539 h -412.74999 z"
style="fill:#d6e3ed;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccccccccccc"
inkscape:connector-curvature="0"
id="path859"
d="m -175.38095,256.64583 61.46474,-11.39744 29.307694,8.95513 43.961536,-3.66346 50.0673101,15.875 68.3846149,-5.69872 23.608965,-9.36218 25.64423,3.66346 59.83655,-4.47756 50.55275,6.10577 -0.0784,37.04167 h -412.74999 z"
style="fill:#ffffff;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -44,8 +44,9 @@
</div>
<div class="form-check mb-3">
{!! Form::checkbox('terms', 'checked', false, ['class' => 'form-check-input']) !!}
<label class="form-check-label" for="terms">I accept the <a href="{{ route('account.terms') }}">Terms and Conditions</a></label>
<a href="{{ route('account.terms') }}">Terms and Conditions</a><br />
{!! Form::checkbox('terms', 'checked', false, ['class' => 'form-check-input', 'id' => 'terms']) !!}
<label class="form-check-label" for="terms">I accept the Terms and Conditions</a></label>
</div>
<div class="form-group">
@ -53,7 +54,7 @@
{!! NoCaptcha::display() !!}
</div>
{!! Form::submit('Register', ['class' => 'btn btn-primary float-right']) !!}
{!! Form::submit('Register', ['class' => 'btn btn-primary']) !!}
{!! Form::close() !!}
@endsection

View file

@ -1,7 +1,7 @@
@extends('layouts.base')
@section('body')
<nav class="navbar navbar-expand navbar-light bg-light">
@section('header')
<nav class="navbar navbar-expand">
<div class="collapse navbar-collapse" >
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
@ -17,6 +17,9 @@
@endif
</div>
</nav>
@endsection
@section('body')
<div class="container-lg pt-3">
@include('parts.errors')
@include('parts.breadcrumb')

View file

@ -6,8 +6,15 @@
<title>{{ config('app.name') }}</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="{{ asset('css/style.css') }}" >
</head>
<body>
<header>
@yield('header')
</header>
@yield('body')
<footer class="text-center mt-2">
© Copyright 2020 - Linphone - Belledonne Communications SARL
</footer>
</body>
</html>

View file

@ -1,7 +1,7 @@
@extends('layouts.base')
@section('body')
<nav class="navbar navbar-expand-lg navbar-light bg-light">
@section('header')
<nav class="navbar navbar-expand-lg">
<div class="collapse navbar-collapse" >
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
@ -12,21 +12,24 @@
<a class="nav-link" href="{{ route('account.index') }}">My Account</a>
</li>
@endif
<li class="nav-item">
<li class="nav-item @if (request()->routeIs('api')) active @endif">
<a class="nav-link" href="{{ route('api') }}">API</a>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item">
<li class="nav-item @if (request()->routeIs('account.register')) active @endif">
<a class="nav-link" href="{{ route('account.register') }}">Register</a>
</li>
<li class="nav-item">
<li class="nav-item @if (request()->routeIs('account.login')) active @endif">
<a class="nav-link" href="{{ route('account.login') }}">Authenticate</a>
</li>
</ul>
</div>
</nav>
@endsection
@section('body')
<div class="container-lg pt-3">
@include('parts.errors')
@yield('content')