├── public
├── favicon.ico
├── robots.txt
├── .htaccess
├── web.config
└── index.php
├── bootstrap
├── cache
│ └── .gitignore
└── app.php
├── storage
├── logs
│ └── .gitignore
├── app
│ ├── public
│ │ └── .gitignore
│ └── .gitignore
└── framework
│ ├── testing
│ └── .gitignore
│ ├── views
│ └── .gitignore
│ ├── cache
│ ├── data
│ │ └── .gitignore
│ └── .gitignore
│ ├── sessions
│ └── .gitignore
│ └── .gitignore
├── database
├── .gitignore
├── seeders
│ └── DatabaseSeeder.php
├── migrations
│ ├── 2014_10_12_100000_create_password_resets_table.php
│ ├── 2014_10_12_000000_create_users_table.php
│ ├── 2019_08_19_000000_create_failed_jobs_table.php
│ └── 2017_12_07_122845_create_oauth_providers_table.php
└── factories
│ └── UserFactory.php
├── resources
├── js
│ ├── plugins
│ │ ├── index.js
│ │ ├── i18n.js
│ │ └── axios.js
│ ├── middleware
│ │ ├── guest.js
│ │ ├── locale.js
│ │ ├── admin.js
│ │ ├── check-auth.js
│ │ ├── auth.js
│ │ └── role.js
│ ├── components
│ │ ├── Child.vue
│ │ ├── index.js
│ │ ├── common
│ │ │ ├── index.js
│ │ │ ├── Card.vue
│ │ │ ├── Button.vue
│ │ │ └── Dropdown.vue
│ │ ├── forms
│ │ │ ├── validation
│ │ │ │ ├── Alert.js
│ │ │ │ ├── HasError.vue
│ │ │ │ ├── AlertError.vue
│ │ │ │ └── AlertSuccess.vue
│ │ │ ├── index.js
│ │ │ ├── TextInput.vue
│ │ │ └── Checkbox.vue
│ │ ├── LocaleDropdown.vue
│ │ ├── App.vue
│ │ ├── Loading.vue
│ │ ├── LoginWithGithub.vue
│ │ └── Navbar.vue
│ ├── layouts
│ │ ├── default.vue
│ │ └── basic.vue
│ ├── app.js
│ ├── store
│ │ ├── mutation-types.js
│ │ ├── index.js
│ │ └── modules
│ │ │ ├── lang.js
│ │ │ └── auth.js
│ ├── pages
│ │ ├── home.vue
│ │ ├── errors
│ │ │ └── 404.vue
│ │ ├── welcome.vue
│ │ ├── auth
│ │ │ ├── password
│ │ │ │ ├── email.vue
│ │ │ │ └── reset.vue
│ │ │ ├── verification
│ │ │ │ ├── resend.vue
│ │ │ │ └── verify.vue
│ │ │ ├── register.vue
│ │ │ └── login.vue
│ │ └── settings
│ │ │ ├── password.vue
│ │ │ ├── profile.vue
│ │ │ └── index.vue
│ ├── lang
│ │ ├── zh-CN.json
│ │ ├── es.json
│ │ ├── en.json
│ │ ├── pt-BR.json
│ │ └── fr.json
│ └── router
│ │ └── routes.js
├── sass
│ ├── elements
│ │ ├── _card.scss
│ │ ├── _transitions.scss
│ │ ├── _navbar.scss
│ │ └── _buttons.scss
│ └── app.scss
├── views
│ ├── oauth
│ │ ├── emailTaken.blade.php
│ │ └── callback.blade.php
│ ├── spa.blade.php
│ └── errors
│ │ └── layout.blade.php
└── lang
│ ├── en
│ ├── verification.php
│ ├── pagination.php
│ ├── auth.php
│ └── passwords.php
│ ├── zh-CN
│ ├── pagination.php
│ ├── auth.php
│ ├── passwords.php
│ └── validation.php
│ ├── pt-BR
│ ├── pagination.php
│ ├── auth.php
│ └── passwords.php
│ └── es
│ ├── pagination.php
│ ├── auth.php
│ └── passwords.php
├── tests
├── Browser
│ ├── console
│ │ └── .gitignore
│ ├── screenshots
│ │ └── .gitignore
│ ├── WelcomeTest.php
│ ├── Pages
│ │ ├── Page.php
│ │ ├── Register.php
│ │ ├── Login.php
│ │ └── Home.php
│ ├── RegisterTest.php
│ └── LoginTest.php
├── TestCase.php
├── Unit
│ └── ExampleTest.php
├── CreatesApplication.php
├── Feature
│ ├── LocaleTest.php
│ ├── RegisterTest.php
│ ├── SettingsTest.php
│ ├── LoginTest.php
│ ├── VerificationTest.php
│ └── OAuthTest.php
└── DuskTestCase.php
├── .babelrc
├── .styleci.yml
├── .gitattributes
├── .editorconfig
├── tailwind.config.js
├── .gitignore
├── app
├── Http
│ ├── Controllers
│ │ ├── SpaController.php
│ │ ├── Controller.php
│ │ ├── Auth
│ │ │ ├── UserController.php
│ │ │ ├── ResetPasswordController.php
│ │ │ ├── ForgotPasswordController.php
│ │ │ ├── RegisterController.php
│ │ │ ├── VerificationController.php
│ │ │ ├── LoginController.php
│ │ │ └── OAuthController.php
│ │ └── Settings
│ │ │ ├── PasswordController.php
│ │ │ └── ProfileController.php
│ ├── Middleware
│ │ ├── EncryptCookies.php
│ │ ├── VerifyCsrfToken.php
│ │ ├── TrimStrings.php
│ │ ├── TrustHosts.php
│ │ ├── PreventRequestsDuringMaintenance.php
│ │ ├── TrustProxies.php
│ │ ├── Authenticate.php
│ │ ├── RedirectIfAuthenticated.php
│ │ └── SetLocale.php
│ └── Kernel.php
├── Exceptions
│ ├── EmailTakenException.php
│ ├── VerifyEmailException.php
│ └── Handler.php
├── Providers
│ ├── BroadcastServiceProvider.php
│ ├── AuthServiceProvider.php
│ ├── EventServiceProvider.php
│ ├── AppServiceProvider.php
│ └── RouteServiceProvider.php
├── Notifications
│ ├── VerifyEmail.php
│ └── ResetPassword.php
├── Models
│ ├── OAuthProvider.php
│ └── User.php
└── Console
│ └── Kernel.php
├── .eslintrc.js
├── routes
├── spa.php
├── web.php
├── channels.php
├── console.php
└── api.php
├── server.php
├── config
├── cors.php
├── view.php
├── services.php
├── hashing.php
├── broadcasting.php
├── filesystems.php
├── queue.php
├── logging.php
├── cache.php
├── mail.php
└── auth.php
├── .env.example
├── .env.dusk
├── LICENSE
├── phpunit.xml
├── package.json
├── webpack.mix.js
├── artisan
├── composer.json
└── .github
└── workflows
└── tests.yml
/public/favicon.ico:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/bootstrap/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/logs/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/database/.gitignore:
--------------------------------------------------------------------------------
1 | *.sqlite
2 | *.sqlite-journal
3 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/resources/js/plugins/index.js:
--------------------------------------------------------------------------------
1 | import './axios'
2 |
--------------------------------------------------------------------------------
/storage/app/public/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/app/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !public/
3 | !.gitignore
4 |
--------------------------------------------------------------------------------
/storage/framework/testing/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/views/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/tests/Browser/console/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/tests/Browser/screenshots/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/cache/data/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/sessions/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !data/
3 | !.gitignore
4 |
--------------------------------------------------------------------------------
/resources/sass/elements/_card.scss:
--------------------------------------------------------------------------------
1 | .card {
2 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
3 | }
4 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "@babel/preset-env"
4 | ],
5 | "plugins": [
6 | "@babel/plugin-syntax-dynamic-import"
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/resources/views/oauth/emailTaken.blade.php:
--------------------------------------------------------------------------------
1 | @extends('errors.layout')
2 |
3 | @section('title', 'Login Error')
4 |
5 | @section('message', 'Email already taken.')
6 |
--------------------------------------------------------------------------------
/storage/framework/.gitignore:
--------------------------------------------------------------------------------
1 | compiled.php
2 | config.php
3 | down
4 | events.scanned.php
5 | maintenance.php
6 | routes.php
7 | routes.scanned.php
8 | schedule-*
9 | services.json
10 |
--------------------------------------------------------------------------------
/resources/sass/app.scss:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | @import 'elements/transitions';
6 |
7 | #app {
8 | @apply min-h-screen bg-blue-50 #{!important};
9 | }
10 |
--------------------------------------------------------------------------------
/resources/js/middleware/guest.js:
--------------------------------------------------------------------------------
1 | import store from '~/store'
2 |
3 | export default (to, from, next) => {
4 | if (store.getters['auth/check']) {
5 | next({ name: 'home' })
6 | } else {
7 | next()
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/resources/js/middleware/locale.js:
--------------------------------------------------------------------------------
1 | import store from '~/store'
2 | import { loadMessages } from '~/plugins/i18n'
3 |
4 | export default async (to, from, next) => {
5 | await loadMessages(store.getters['lang/locale'])
6 |
7 | next()
8 | }
9 |
--------------------------------------------------------------------------------
/resources/js/middleware/admin.js:
--------------------------------------------------------------------------------
1 | import store from '~/store'
2 |
3 | export default (to, from, next) => {
4 | if (store.getters['auth/user'].role !== 'admin') {
5 | next({ name: 'home' })
6 | } else {
7 | next()
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/.styleci.yml:
--------------------------------------------------------------------------------
1 | php:
2 | preset: laravel
3 | disabled:
4 | - no_unused_imports
5 | finder:
6 | not-name:
7 | - index.php
8 | - server.php
9 | js:
10 | finder:
11 | not-name:
12 | - webpack.mix.js
13 | css: true
14 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.css linguist-vendored
3 | *.scss linguist-vendored
4 | *.js linguist-vendored
5 | CHANGELOG.md export-ignore
6 | README.md export-ignore
7 | .travis.yml export-ignore
8 | .env.dusk.local export-ignore
9 | .env.dusk.testing export-ignore
10 |
--------------------------------------------------------------------------------
/resources/js/components/Child.vue:
--------------------------------------------------------------------------------
1 |
2 |
a fork from
12 | github.com/cretueusebiu/laravel-vue-spa 14 |20 | Success 21 |
22 | 23 |