forked from oyd/bagis
parent
dd8cee1704
commit
ba36b3851e
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
namespace App\Http\Controllers\Auth; |
||||
|
||||
use App\Http\Controllers\Controller; |
||||
use App\Providers\RouteServiceProvider; |
||||
use Illuminate\Foundation\Auth\ConfirmsPasswords; |
||||
|
||||
class ConfirmPasswordController extends Controller |
||||
{ |
||||
/* |
||||
|-------------------------------------------------------------------------- |
||||
| Confirm Password Controller |
||||
|-------------------------------------------------------------------------- |
||||
| |
||||
| This controller is responsible for handling password confirmations and |
||||
| uses a simple trait to include the behavior. You're free to explore |
||||
| this trait and override any functions that require customization. |
||||
| |
||||
*/ |
||||
|
||||
use ConfirmsPasswords; |
||||
|
||||
/** |
||||
* Where to redirect users when the intended url fails. |
||||
* |
||||
* @var string |
||||
*/ |
||||
protected $redirectTo = RouteServiceProvider::HOME; |
||||
|
||||
/** |
||||
* Create a new controller instance. |
||||
* |
||||
* @return void |
||||
*/ |
||||
public function __construct() |
||||
{ |
||||
$this->middleware('auth'); |
||||
} |
||||
} |
@ -0,0 +1,22 @@ |
||||
<?php |
||||
|
||||
namespace App\Http\Controllers\Auth; |
||||
|
||||
use App\Http\Controllers\Controller; |
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails; |
||||
|
||||
class ForgotPasswordController extends Controller |
||||
{ |
||||
/* |
||||
|-------------------------------------------------------------------------- |
||||
| Password Reset Controller |
||||
|-------------------------------------------------------------------------- |
||||
| |
||||
| This controller is responsible for handling password reset emails and |
||||
| includes a trait which assists in sending these notifications from |
||||
| your application to your users. Feel free to explore this trait. |
||||
| |
||||
*/ |
||||
|
||||
use SendsPasswordResetEmails; |
||||
} |
@ -0,0 +1,40 @@ |
||||
<?php |
||||
|
||||
namespace App\Http\Controllers\Auth; |
||||
|
||||
use App\Http\Controllers\Controller; |
||||
use App\Providers\RouteServiceProvider; |
||||
use Illuminate\Foundation\Auth\AuthenticatesUsers; |
||||
|
||||
class LoginController extends Controller |
||||
{ |
||||
/* |
||||
|-------------------------------------------------------------------------- |
||||
| Login Controller |
||||
|-------------------------------------------------------------------------- |
||||
| |
||||
| This controller handles authenticating users for the application and |
||||
| redirecting them to your home screen. The controller uses a trait |
||||
| to conveniently provide its functionality to your applications. |
||||
| |
||||
*/ |
||||
|
||||
use AuthenticatesUsers; |
||||
|
||||
/** |
||||
* Where to redirect users after login. |
||||
* |
||||
* @var string |
||||
*/ |
||||
protected $redirectTo = RouteServiceProvider::HOME; |
||||
|
||||
/** |
||||
* Create a new controller instance. |
||||
* |
||||
* @return void |
||||
*/ |
||||
public function __construct() |
||||
{ |
||||
$this->middleware('guest')->except('logout'); |
||||
} |
||||
} |
@ -0,0 +1,73 @@ |
||||
<?php |
||||
|
||||
namespace App\Http\Controllers\Auth; |
||||
|
||||
use App\Http\Controllers\Controller; |
||||
use App\Providers\RouteServiceProvider; |
||||
use App\User; |
||||
use Illuminate\Foundation\Auth\RegistersUsers; |
||||
use Illuminate\Support\Facades\Hash; |
||||
use Illuminate\Support\Facades\Validator; |
||||
|
||||
class RegisterController extends Controller |
||||
{ |
||||
/* |
||||
|-------------------------------------------------------------------------- |
||||
| Register Controller |
||||
|-------------------------------------------------------------------------- |
||||
| |
||||
| This controller handles the registration of new users as well as their |
||||
| validation and creation. By default this controller uses a trait to |
||||
| provide this functionality without requiring any additional code. |
||||
| |
||||
*/ |
||||
|
||||
use RegistersUsers; |
||||
|
||||
/** |
||||
* Where to redirect users after registration. |
||||
* |
||||
* @var string |
||||
*/ |
||||
protected $redirectTo = RouteServiceProvider::HOME; |
||||
|
||||
/** |
||||
* Create a new controller instance. |
||||
* |
||||
* @return void |
||||
*/ |
||||
public function __construct() |
||||
{ |
||||
$this->middleware('guest'); |
||||
} |
||||
|
||||
/** |
||||
* Get a validator for an incoming registration request. |
||||
* |
||||
* @param array $data |
||||
* @return \Illuminate\Contracts\Validation\Validator |
||||
*/ |
||||
protected function validator(array $data) |
||||
{ |
||||
return Validator::make($data, [ |
||||
'name' => ['required', 'string', 'max:255'], |
||||
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], |
||||
'password' => ['required', 'string', 'min:8', 'confirmed'], |
||||
]); |
||||
} |
||||
|
||||
/** |
||||
* Create a new user instance after a valid registration. |
||||
* |
||||
* @param array $data |
||||
* @return \App\User |
||||
*/ |
||||
protected function create(array $data) |
||||
{ |
||||
return User::create([ |
||||
'name' => $data['name'], |
||||
'email' => $data['email'], |
||||
'password' => Hash::make($data['password']), |
||||
]); |
||||
} |
||||
} |
@ -0,0 +1,30 @@ |
||||
<?php |
||||
|
||||
namespace App\Http\Controllers\Auth; |
||||
|
||||
use App\Http\Controllers\Controller; |
||||
use App\Providers\RouteServiceProvider; |
||||
use Illuminate\Foundation\Auth\ResetsPasswords; |
||||
|
||||
class ResetPasswordController extends Controller |
||||
{ |
||||
/* |
||||
|-------------------------------------------------------------------------- |
||||
| Password Reset Controller |
||||
|-------------------------------------------------------------------------- |
||||
| |
||||
| This controller is responsible for handling password reset requests |
||||
| and uses a simple trait to include this behavior. You're free to |
||||
| explore this trait and override any methods you wish to tweak. |
||||
| |
||||
*/ |
||||
|
||||
use ResetsPasswords; |
||||
|
||||
/** |
||||
* Where to redirect users after resetting their password. |
||||
* |
||||
* @var string |
||||
*/ |
||||
protected $redirectTo = RouteServiceProvider::HOME; |
||||
} |
@ -0,0 +1,42 @@ |
||||
<?php |
||||
|
||||
namespace App\Http\Controllers\Auth; |
||||
|
||||
use App\Http\Controllers\Controller; |
||||
use App\Providers\RouteServiceProvider; |
||||
use Illuminate\Foundation\Auth\VerifiesEmails; |
||||
|
||||
class VerificationController extends Controller |
||||
{ |
||||
/* |
||||
|-------------------------------------------------------------------------- |
||||
| Email Verification Controller |
||||
|-------------------------------------------------------------------------- |
||||
| |
||||
| This controller is responsible for handling email verification for any |
||||
| user that recently registered with the application. Emails may also |
||||
| be re-sent if the user didn't receive the original email message. |
||||
| |
||||
*/ |
||||
|
||||
use VerifiesEmails; |
||||
|
||||
/** |
||||
* Where to redirect users after verification. |
||||
* |
||||
* @var string |
||||
*/ |
||||
protected $redirectTo = RouteServiceProvider::HOME; |
||||
|
||||
/** |
||||
* Create a new controller instance. |
||||
* |
||||
* @return void |
||||
*/ |
||||
public function __construct() |
||||
{ |
||||
$this->middleware('auth'); |
||||
$this->middleware('signed')->only('verify'); |
||||
$this->middleware('throttle:6,1')->only('verify', 'resend'); |
||||
} |
||||
} |
@ -0,0 +1,13 @@ |
||||
<?php |
||||
|
||||
namespace App\Http\Controllers; |
||||
|
||||
use Illuminate\Http\Request; |
||||
|
||||
class DonationController extends Controller |
||||
{ |
||||
public function index(Request $request) |
||||
{ |
||||
return view('donate'); |
||||
} |
||||
} |
@ -0,0 +1,28 @@ |
||||
<?php |
||||
|
||||
namespace App\Http\Controllers; |
||||
|
||||
use Illuminate\Http\Request; |
||||
|
||||
class HomeController extends Controller |
||||
{ |
||||
/** |
||||
* Create a new controller instance. |
||||
* |
||||
* @return void |
||||
*/ |
||||
public function __construct() |
||||
{ |
||||
$this->middleware('auth'); |
||||
} |
||||
|
||||
/** |
||||
* Show the application dashboard. |
||||
* |
||||
* @return \Illuminate\Contracts\Support\Renderable |
||||
*/ |
||||
public function index() |
||||
{ |
||||
return view('home'); |
||||
} |
||||
} |
@ -0,0 +1,32 @@ |
||||
<?php |
||||
|
||||
use Illuminate\Database\Migrations\Migration; |
||||
use Illuminate\Database\Schema\Blueprint; |
||||
use Illuminate\Support\Facades\Schema; |
||||
|
||||
class CreatePasswordResetsTable extends Migration |
||||
{ |
||||
/** |
||||
* Run the migrations. |
||||
* |
||||
* @return void |
||||
*/ |
||||
public function up() |
||||
{ |
||||
Schema::create('password_resets', function (Blueprint $table) { |
||||
$table->string('email')->index(); |
||||
$table->string('token'); |
||||
$table->timestamp('created_at')->nullable(); |
||||
}); |
||||
} |
||||
|
||||
/** |
||||
* Reverse the migrations. |
||||
* |
||||
* @return void |
||||
*/ |
||||
public function down() |
||||
{ |
||||
Schema::dropIfExists('password_resets'); |
||||
} |
||||
} |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,70 @@ |
||||
/*! |
||||
* Bootstrap v4.5.0 (https://getbootstrap.com/) |
||||
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) |
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||||
*/ |
||||
|
||||
/*! |
||||
* Sizzle CSS Selector Engine v2.3.5 |
||||
* https://sizzlejs.com/ |
||||
* |
||||
* Copyright JS Foundation and other contributors |
||||
* Released under the MIT license |
||||
* https://js.foundation/ |
||||
* |
||||
* Date: 2020-03-14 |
||||
*/ |
||||
|
||||
/*! |
||||
* Vue.js v2.6.11 |
||||
* (c) 2014-2019 Evan You |
||||
* Released under the MIT License. |
||||
*/ |
||||
|
||||
/*! |
||||
* jQuery JavaScript Library v3.5.1 |
||||
* https://jquery.com/ |
||||
* |
||||
* Includes Sizzle.js |
||||
* https://sizzlejs.com/ |
||||
* |
||||
* Copyright JS Foundation and other contributors |
||||
* Released under the MIT license |
||||
* https://jquery.org/license |
||||
* |
||||
* Date: 2020-05-04T22:49Z |
||||
*/ |
||||
|
||||
/** |
||||
* @license |
||||
* Lodash <https://lodash.com/> |
||||
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/> |
||||
* Released under MIT license <https://lodash.com/license> |
||||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> |
||||
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors |
||||
*/ |
||||
|
||||
/**! |
||||
* @fileOverview Kickass library to create and place poppers near their reference elements. |
||||
* @version 1.16.1 |
||||
* @license |
||||
* Copyright (c) 2016 Federico Zivolo and contributors |
||||
* |
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
* of this software and associated documentation files (the "Software"), to deal |
||||
* in the Software without restriction, including without limitation the rights |
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
* copies of the Software, and to permit persons to whom the Software is |
||||
* furnished to do so, subject to the following conditions: |
||||
* |
||||
* The above copyright notice and this permission notice shall be included in all |
||||
* copies or substantial portions of the Software. |
||||
* |
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||
* SOFTWARE. |
||||
*/ |
@ -0,0 +1,4 @@ |
||||
{ |
||||
"/js/app.js": "/js/app.js?id=752a125965afecb67512", |
||||
"/css/app.css": "/css/app.css?id=36412c9f34a08f26af3c" |
||||
} |
@ -1 +1,32 @@ |
||||
/** |
||||
* First we will load all of this project's JavaScript dependencies which |
||||
* includes Vue and other libraries. It is a great starting point when |
||||
* building robust, powerful web applications using Vue and Laravel. |
||||
*/ |
||||
|
||||
require('./bootstrap'); |
||||
|
||||
window.Vue = require('vue'); |
||||
|
||||
/** |
||||
* The following block of code may be used to automatically register your |
||||
* Vue components. It will recursively scan this directory for the Vue |
||||
* components and automatically register them with their "basename". |
||||
* |
||||
* Eg. ./components/ExampleComponent.vue -> <example-component></example-component> |
||||
*/ |
||||
|
||||
// const files = require.context('./', true, /\.vue$/i)
|
||||
// files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default))
|
||||
|
||||
Vue.component('donation-card', require('./components/DonationCard.vue').default); |
||||
|
||||
/** |
||||
* Next, we will create a fresh Vue application instance and attach it to |
||||
* the page. Then, you may begin adding components to this application |
||||
* or customize the JavaScript scaffolding to fit your unique needs. |
||||
*/ |
||||
|
||||
const app = new Vue({ |
||||
el: '#app', |
||||
}); |
||||
|
@ -0,0 +1,268 @@ |
||||
<template> |
||||
<div class="card"> |
||||
<div class="card-header">Donate</div> |
||||
|
||||
<div class="card-body"> |
||||
<form method="POST" action> |
||||
<div class="form-group row"> |
||||
<label for="currency" class="col-md-4 col-form-label text-md-right">Donation currency</label> |
||||
|
||||
<div class="col-md-8"> |
||||
<div class="row"> |
||||
<div class="col" v-for="currencyItem in currencies" :key="currencyItem.code"> |
||||
<button |
||||
type="button" |
||||
class="btn btn-block" |
||||
:class="{'btn-primary':currency==currencyItem.code, 'btn-outline-primary':currency!=currencyItem.code}" |
||||
@click="currency=currencyItem.code" |
||||
>{{currencyItem.symbol}} | {{currencyItem.name}}</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="form-group row"> |
||||
<label for="frequency" class="col-md-4 col-form-label text-md-right">Donation frequency</label> |
||||
|
||||
<div class="col-md-8"> |
||||
<div class="row"> |
||||
<div class="col" v-for="frequencyItem in frequencies" :key="frequencyItem.code"> |
||||
<button |
||||
type="button" |
||||
class="btn btn-block" |
||||
:class="{'btn-primary':frequency==frequencyItem.code, 'btn-outline-primary':frequency!=frequencyItem.code}" |
||||
@click="frequency=frequencyItem.code" |
||||
>{{frequencyItem.name}}</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="form-group row"> |
||||
<label for="donationPackage" class="col-md-4 col-form-label text-md-right">Donation amount</label> |
||||
|
||||
<div class="col-md-8"> |
||||
<div class="row"> |
||||
<div |
||||
class="col-6" |
||||
v-for="donationPackageItem in donationPackages" |
||||
:key="donationPackageItem.id" |
||||
> |
||||
<button |
||||
type="button" |
||||
class="btn btn-block mb-2" |
||||
:class="{'btn-primary':donationPackage==donationPackageItem.id, 'btn-outline-primary':donationPackage!=donationPackageItem.id}" |
||||
@click="setDonationPackage(donationPackageItem.id)" |
||||
> |
||||
<span>{{activeCurrency.symbol}}</span> |
||||
<span v-if="frequency=='once'">{{donationPackageItem.once_amount}}</span> |
||||
<span v-else-if="frequency=='monthly'">{{donationPackageItem.monthly_amount}} /mo</span> |
||||
<span |
||||
v-else-if="frequency=='annually'" |
||||
>{{donationPackageItem.annually_amount}} /yr</span> |
||||
|
||||
<br /> |
||||
<small>{{donationPackageItem.name}}</small> |
||||
</button> |
||||
</div> |
||||
<div class="col-6"> |
||||
<button |
||||
type="button" |
||||
class="btn btn-block mb-2" |
||||
:class="{'btn-primary':donationPackage==null, 'btn-outline-primary':donationPackage!=null}" |
||||
@click="setDonationPackage(null)" |
||||
> |
||||
<small>other</small> |
||||
<br /> |
||||
|
||||
<div class="input-group mb-3"> |
||||
<div class="input-group-prepend"> |
||||
<span class="input-group-text">{{activeCurrency.symbol}}</span> |
||||
</div> |
||||
<input |
||||
type="number" |
||||
class="form-control" |
||||
aria-label="Amount" |
||||
v-model.number="amount" |
||||
@keypress="onlyNumber" |
||||
/> |
||||
<div |
||||
class="input-group-append" |
||||
v-if="frequency=='monthly' || frequency=='annually'" |
||||
> |
||||
<span v-if="frequency=='monthly'" class="input-group-text">/mo</span> |
||||
<span v-else-if="frequency=='annually'" class="input-group-text">/yr</span> |
||||
</div> |
||||
</div> |
||||
</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<!-- <div class="form-group row"> |
||||
<label for="email" class="col-md-4 col-form-label text-md-right">E-Mail Address</label> |
||||
|
||||
<div class="col-md-6"> |
||||
<input |
||||
id="email" |
||||
type="email" |
||||
class="form-control is-invalid" |
||||
name="email" |
||||
required |
||||
autocomplete="email" |
||||
autofocus |
||||
/> |
||||
<span class="invalid-feedback" role="alert"> |
||||
<strong>Sample error</strong> |
||||
</span> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row"> |
||||
<label for="password" class="col-md-4 col-form-label text-md-right">Password</label> |
||||
|
||||
<div class="col-md-6"> |
||||
<input |
||||
id="password" |
||||
type="password" |
||||
class="form-control" |
||||
name="password" |
||||
required |
||||
autocomplete="current-password" |
||||
/> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row"> |
||||
<div class="col-md-6 offset-md-4"> |
||||
<div class="form-check"> |
||||
<input class="form-check-input" type="checkbox" name="remember" id="remember" /> |
||||
<label class="form-check-label" for="remember">Remember Me</label> |
||||
</div> |
||||
</div> |
||||
</div>--> |
||||
|
||||
<div class="form-group row mb-0"> |
||||
<div class="col-md-8 offset-md-4"> |
||||
<button type="submit" class="btn btn-primary btn-lg">Donate {{amountText}}</button> |
||||
|
||||
<!-- <a class="btn btn-link" href="#">Forgot Your Password?</a> --> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
currency: "USD", |
||||
frequency: "monthly", |
||||
donationPackage: 4, |
||||
amount: 25, |
||||
currencies: [ |
||||
{ name: "USD", code: "USD", symbol: "$" }, |
||||
{ name: "EUR", code: "EUR", symbol: "€" }, |
||||
{ name: "TRY", code: "TRY", symbol: "₺" } |
||||
], |
||||
frequencies: [ |
||||
{ name: "once", code: "once" }, |
||||
{ name: "monthly", code: "monthly" }, |
||||
{ name: "annually", code: "annually" } |
||||
], |
||||
donationPackages: [ |
||||
{ |
||||
id: 1, |
||||
name: "Super Major Donor", |
||||
once_amount: 2500, |
||||
monthly_amount: 250, |
||||
annually_amount: 2500 |
||||
}, |
||||
{ |
||||
id: 2, |
||||
name: "Major Donor", |
||||
once_amount: 1000, |
||||
monthly_amount: 100, |
||||
annually_amount: 1000 |
||||
}, |
||||
{ |
||||
id: 3, |
||||
name: "Rare Earths Level", |
||||
once_amount: 500, |
||||
monthly_amount: 50, |
||||
annually_amount: 500 |
||||
}, |
||||
{ |
||||
id: 4, |
||||
name: "Titanium Level", |
||||
once_amount: 250, |
||||
monthly_amount: 25, |
||||
annually_amount: 250 |
||||
}, |
||||
{ |
||||
id: 5, |
||||
name: "Gold Level", |
||||
once_amount: 100, |
||||
monthly_amount: 10, |
||||
annually_amount: 100 |
||||
}, |
||||
{ |
||||
id: 6, |
||||
name: "Copper Level", |
||||
once_amount: 50, |
||||
monthly_amount: 5, |
||||
annually_amount: 50 |
||||
} |
||||
] |
||||
}; |
||||
}, |
||||
computed: { |
||||
activeCurrency() { |
||||
const itemIndex = this.currencies.findIndex( |
||||
item => item.code === this.currency |
||||
); |
||||
if (itemIndex === -1) return false; |
||||
return this.currencies[itemIndex]; |
||||
}, |
||||
amountText() { |
||||
var text = this.activeCurrency.symbol + this.amount; |
||||
if (this.frequency == "monthly") { |
||||
text = text + "/mo"; |
||||
} else if (this.frequency == "annually") { |
||||
text = text + "/yr"; |
||||
} |
||||
return text; |
||||
} |
||||
}, |
||||
methods: { |
||||
setDonationPackage(id) { |
||||
this.donationPackage = id; |
||||
const itemIndex = this.donationPackages.findIndex(item => item.id === id); |
||||
if (itemIndex !== -1) { |
||||
if (this.frequency == "once") { |
||||
this.amount = this.donationPackages[itemIndex].once_amount; |
||||
} else if (this.frequency == "monthly") { |
||||
this.amount = this.donationPackages[itemIndex].monthly_amount; |
||||
} else if (this.frequency == "annually") { |
||||
this.amount = this.donationPackages[itemIndex].annually_amount; |
||||
} |
||||
} |
||||
}, |
||||
onlyNumber($event) { |
||||
//console.log($event.keyCode); //keyCodes value |
||||
let keyCode = $event.keyCode ? $event.keyCode : $event.which; |
||||
if ((keyCode < 48 || keyCode > 57) && keyCode !== 46) { |
||||
// 46 is dot |
||||
$event.preventDefault(); |
||||
} |
||||
} |
||||
}, |
||||
watch: { |
||||
amount() { |
||||
if (this.amount < 1) { |
||||
this.amount = 5; |
||||
} |
||||
} |
||||
} |
||||
}; |
||||
</script> |
@ -0,0 +1,23 @@ |
||||
<template> |
||||
<div class="container"> |
||||
<div class="row justify-content-center"> |
||||
<div class="col-md-8"> |
||||
<div class="card"> |
||||
<div class="card-header">Example Component</div> |
||||
|
||||
<div class="card-body"> |
||||
I'm an example component. |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
mounted() { |
||||
console.log('Component mounted.') |
||||
} |
||||
} |
||||
</script> |
@ -0,0 +1,22 @@ |
||||
// Body |
||||
$body-bg: #f8fafc; |
||||
|
||||
// Typography |
||||
$font-family-sans-serif: "Liberation Sans", |
||||
sans-serif; |
||||
$font-size-base: 1rem; |
||||
$line-height-base: 1.6; |
||||
|
||||
// Colors |
||||
$blue: #3490dc; |
||||
$indigo: #6574cd; |
||||
$purple: #9561e2; |
||||
$pink: #f66d9b; |
||||
$red: #e3342f; |
||||
$orange: #f6993f; |
||||
$yellow: #ffed4a; |
||||
$green: #38c172; |
||||
$teal: #4dc0b5; |
||||
$cyan: #6cb2eb; |
||||
|
||||
$primary: #4C2447; |
@ -1 +1,8 @@ |
||||
// |
||||
// Fonts |
||||
@import url('https://oyd.org.tr/fonts/stylesheet.css'); |
||||
|
||||
// Variables |
||||
@import 'variables'; |
||||
|
||||
// Bootstrap |
||||
@import '~bootstrap/scss/bootstrap'; |
||||
|
@ -0,0 +1,73 @@ |
||||
@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">{{ __('Login') }}</div> |
||||
|
||||
<div class="card-body"> |
||||
<form method="POST" action="{{ route('login') }}"> |
||||
@csrf |
||||
|
||||
<div class="form-group row"> |
||||
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label> |
||||
|
||||
<div class="col-md-6"> |
||||
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus> |
||||
|
||||
@error('email') |
||||
<span class="invalid-feedback" role="alert"> |
||||
<strong>{{ $message }}</strong> |
||||
</span> |
||||
@enderror |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row"> |
||||
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label> |
||||
|
||||
<div class="col-md-6"> |
||||
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password"> |
||||
|
||||
@error('password') |
||||
<span class="invalid-feedback" role="alert"> |
||||
<strong>{{ $message }}</strong> |
||||
</span> |
||||
@enderror |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row"> |
||||
<div class="col-md-6 offset-md-4"> |
||||
<div class="form-check"> |
||||
<input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}> |
||||
|
||||
<label class="form-check-label" for="remember"> |
||||
{{ __('Remember Me') }} |
||||
</label> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row mb-0"> |
||||
<div class="col-md-8 offset-md-4"> |
||||
<button type="submit" class="btn btn-primary"> |
||||
{{ __('Login') }} |
||||
</button> |
||||
|
||||
@if (Route::has('password.request')) |
||||
<a class="btn btn-link" href="{{ route('password.request') }}"> |
||||
{{ __('Forgot Your Password?') }} |
||||
</a> |
||||
@endif |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@endsection |
@ -0,0 +1,49 @@ |
||||
@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">{{ __('Confirm Password') }}</div> |
||||
|
||||
<div class="card-body"> |
||||
{{ __('Please confirm your password before continuing.') }} |
||||
|
||||
<form method="POST" action="{{ route('password.confirm') }}"> |
||||
@csrf |
||||
|
||||
<div class="form-group row"> |
||||
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label> |
||||
|
||||
<div class="col-md-6"> |
||||
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password"> |
||||
|
||||
@error('password') |
||||
<span class="invalid-feedback" role="alert"> |
||||
<strong>{{ $message }}</strong> |
||||
</span> |
||||
@enderror |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row mb-0"> |
||||
<div class="col-md-8 offset-md-4"> |
||||
<button type="submit" class="btn btn-primary"> |
||||
{{ __('Confirm Password') }} |
||||
</button> |
||||
|
||||
@if (Route::has('password.request')) |
||||
<a class="btn btn-link" href="{{ route('password.request') }}"> |
||||
{{ __('Forgot Your Password?') }} |
||||
</a> |
||||
@endif |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@endsection |
@ -0,0 +1,47 @@ |
||||
@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">{{ __('Reset Password') }}</div> |
||||
|
||||
<div class="card-body"> |
||||
@if (session('status')) |
||||
<div class="alert alert-success" role="alert"> |
||||
{{ session('status') }} |
||||
</div> |
||||
@endif |
||||
|
||||
<form method="POST" action="{{ route('password.email') }}"> |
||||
@csrf |
||||
|
||||
<div class="form-group row"> |
||||
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label> |
||||
|
||||
<div class="col-md-6"> |
||||
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus> |
||||
|
||||
@error('email') |
||||
<span class="invalid-feedback" role="alert"> |
||||
<strong>{{ $message }}</strong> |
||||
</span> |
||||
@enderror |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row mb-0"> |
||||
<div class="col-md-6 offset-md-4"> |
||||
<button type="submit" class="btn btn-primary"> |
||||
{{ __('Send Password Reset Link') }} |
||||
</button> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@endsection |
@ -0,0 +1,65 @@ |
||||
@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">{{ __('Reset Password') }}</div> |
||||
|
||||
<div class="card-body"> |
||||
<form method="POST" action="{{ route('password.update') }}"> |
||||
@csrf |
||||
|
||||
<input type="hidden" name="token" value="{{ $token }}"> |
||||
|
||||
<div class="form-group row"> |
||||
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label> |
||||
|
||||
<div class="col-md-6"> |
||||
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ $email ?? old('email') }}" required autocomplete="email" autofocus> |
||||
|
||||
@error('email') |
||||
<span class="invalid-feedback" role="alert"> |
||||
<strong>{{ $message }}</strong> |
||||
</span> |
||||
@enderror |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row"> |
||||
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label> |
||||
|
||||
<div class="col-md-6"> |
||||
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password"> |
||||
|
||||
@error('password') |
||||
<span class="invalid-feedback" role="alert"> |
||||
<strong>{{ $message }}</strong> |
||||
</span> |
||||
@enderror |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row"> |
||||
<label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label> |
||||
|
||||
<div class="col-md-6"> |
||||
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row mb-0"> |
||||
<div class="col-md-6 offset-md-4"> |
||||
<button type="submit" class="btn btn-primary"> |
||||
{{ __('Reset Password') }} |
||||
</button> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@endsection |
@ -0,0 +1,77 @@ |
||||
@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">{{ __('Register') }}</div> |
||||
|
||||
<div class="card-body"> |
||||
<form method="POST" action="{{ route('register') }}"> |
||||
@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"> |
||||
<input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}" required autocomplete="name" autofocus> |
||||
|
||||
@error('name') |
||||
<span class="invalid-feedback" role="alert"> |
||||
<strong>{{ $message }}</strong> |
||||
</span> |
||||
@enderror |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row"> |
||||
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label> |
||||
|
||||
<div class="col-md-6"> |
||||
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email"> |
||||
|
||||
@error('email') |
||||
<span class="invalid-feedback" role="alert"> |
||||
<strong>{{ $message }}</strong> |
||||
</span> |
||||
@enderror |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row"> |
||||
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label> |
||||
|
||||
<div class="col-md-6"> |
||||
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password"> |
||||
|
||||
@error('password') |
||||
<span class="invalid-feedback" role="alert"> |
||||
<strong>{{ $message }}</strong> |
||||
</span> |
||||
@enderror |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row"> |
||||
<label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label> |
||||
|
||||
<div class="col-md-6"> |
||||
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="form-group row mb-0"> |
||||
<div class="col-md-6 offset-md-4"> |
||||
<button type="submit" class="btn btn-primary"> |
||||
{{ __('Register') }} |
||||
</button> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@endsection |
@ -0,0 +1,28 @@ |
||||
@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">{{ __('Verify Your Email Address') }}</div> |
||||
|
||||
<div class="card-body"> |
||||
@if (session('resent')) |
||||
<div class="alert alert-success" role="alert"> |
||||
{{ __('A fresh verification link has been sent to your email address.') }} |
||||
</div> |
||||
@endif |
||||
|
||||
{{ __('Before proceeding, please check your email for a verification link.') }} |
||||
{{ __('If you did not receive the email') }}, |
||||
<form class="d-inline" method="POST" action="{{ route('verification.resend') }}"> |
||||
@csrf |
||||
<button type="submit" class="btn btn-link p-0 m-0 align-baseline">{{ __('click here to request another') }}</button>. |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@endsection |
@ -0,0 +1,11 @@ |
||||
@extends('layouts.app') |
||||
|
||||
@section('content') |
||||
<div class="container"> |
||||
<div class="row justify-content-center"> |
||||
<div class="col-md-8"> |
||||
<donation-card></donation-card> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@endsection |
@ -0,0 +1,23 @@ |
||||
@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">Dashboard</div> |
||||
|
||||
<div class="card-body"> |
||||
@if (session('status')) |
||||
<div class="alert alert-success" role="alert"> |
||||
{{ session('status') }} |
||||
</div> |
||||
@endif |
||||
|
||||
You are logged in! |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@endsection |
@ -0,0 +1,81 @@ |
||||
<!doctype html> |
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
|
||||
<!-- CSRF Token --> |
||||
<meta name="csrf-token" content="{{ csrf_token() }}"> |
||||
|
||||
<title>{{ config('app.name', 'Laravel') }}</title> |
||||
|
||||
<!-- Scripts --> |
||||
<script src="{{ mix('js/app.js') }}" defer></script> |
||||
|
||||
<!-- Fonts --> |
||||
<link rel="dns-prefetch" href="//fonts.gstatic.com"> |
||||
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet"> |
||||
|
||||
<!-- Styles --> |
||||
<link href="{{ mix('css/app.css') }}" rel="stylesheet"> |
||||
</head> |
||||
<body> |
||||
<div id="app"> |
||||
<nav class="navbar navbar-expand-md navbar-dark bg-primary shadow-sm"> |
||||
<div class="container"> |
||||
<a class="navbar-brand" href="{{ url('/') }}"> |
||||
<img src="https://oyd.org.tr/oyd_logo.svg" alt="Özgür Yazılım Derneği" width="auto" height="60"> |
||||
{{ 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') }}">{{ __('Login') }}</a> |
||||
</li> |
||||
@if (Route::has('register')) |
||||
<li class="nav-item"> |
||||
<a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a> |
||||
</li> |
||||
@endif |
||||
@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> |
||||
</div> |
||||
</body> |
||||
</html> |
Loading…
Reference in new issue