├── .editorconfig ├── .env.example ├── .eslintrc.js ├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── app ├── AuthenticatableForUser.php ├── BaseModel.php ├── BaseModelPivot.php ├── Console │ └── Kernel.php ├── Contracts │ └── Socialite │ │ └── Avatar.php ├── Email.php ├── Exceptions │ └── Handler.php ├── Http │ ├── Controllers │ │ ├── API │ │ │ ├── Auth │ │ │ │ ├── AuthController.php │ │ │ │ ├── ForgotPasswordController.php │ │ │ │ ├── ResetPasswordController.php │ │ │ │ └── SocialiteController.php │ │ │ ├── BaseController.php │ │ │ └── Profile │ │ │ │ ├── OtherProfileController.php │ │ │ │ └── ProfileController.php │ │ └── Controller.php │ ├── Kernel.php │ ├── Middleware │ │ ├── AuthIfToken.php │ │ ├── EncryptCookies.php │ │ ├── RedirectIfAuthenticated.php │ │ ├── TrimStrings.php │ │ ├── TrustProxies.php │ │ └── VerifyCsrfToken.php │ ├── Requests │ │ ├── Auth │ │ │ ├── ForgotPasswordEmailRequest.php │ │ │ ├── ForgotPasswordResetRequest.php │ │ │ ├── LoginRequest.php │ │ │ └── SignupRequest.php │ │ └── Profile │ │ │ ├── Current │ │ │ ├── SaveAvatarRequest.php │ │ │ ├── SaveEmailRequest.php │ │ │ ├── SavePhoneRequest.php │ │ │ ├── SetPasswordRequest.php │ │ │ └── SetUserDataRequest.php │ │ │ └── Other │ │ │ └── GetUserRequest.php │ └── Resources │ │ ├── EmailResource.php │ │ ├── PhoneResource.php │ │ └── UserResource.php ├── Mail │ ├── EmailVerify.php │ └── ForgotPassword.php ├── Phone.php ├── Providers │ ├── AppServiceProvider.php │ ├── AuthServiceProvider.php │ ├── BroadcastServiceProvider.php │ ├── EventServiceProvider.php │ └── RouteServiceProvider.php ├── Services │ └── Socialite │ │ └── Avatars │ │ ├── Google.php │ │ └── Vkontakte.php ├── SocialiteProvider.php ├── SocialiteProviderUser.php ├── Traits │ ├── Avatar.php │ ├── BaseModelTimezones.php │ ├── EmailVerification.php │ ├── PassportToken.php │ └── Socialite.php ├── User.php └── UserPasswordHistroy.php ├── artisan ├── bootstrap ├── app.php └── cache │ └── .gitignore ├── composer.json ├── composer.lock ├── config ├── app.php ├── auth.php ├── broadcasting.php ├── cache.php ├── countries.php ├── database.php ├── filesystems.php ├── hashing.php ├── logging.php ├── mail.php ├── queue.php ├── services.php ├── session.php ├── validation.php └── view.php ├── database ├── .gitignore ├── factories │ └── UserFactory.php ├── migrations │ ├── 2014_10_12_000000_create_users_table.php │ ├── 2014_10_12_100000_create_password_resets_table.php │ ├── 2018_06_06_194314_create_socialite_tables_and_modify_users_table.php │ ├── 2018_06_17_051343_create_emails_table.php │ ├── 2018_07_10_081531_create_users_passwords_history_table.php │ └── 2018_07_14_114049_create_phones_table.php └── seeds │ ├── DatabaseSeeder.php │ ├── SocialiteProvidersTableSeeder.php │ └── UsersTableSeeder.php ├── nuxt.config.js ├── package.json ├── phpunit.xml ├── public ├── .htaccess ├── avatars │ └── forAdminSeed │ │ ├── circle.jpg │ │ ├── lg.jpg │ │ ├── md.jpg │ │ └── sm.jpg ├── index.php └── robots.txt ├── resources ├── lang │ ├── en │ │ ├── auth.php │ │ ├── pagination.php │ │ ├── passwords.php │ │ └── validation.php │ └── ru │ │ ├── auth.php │ │ ├── pagination.php │ │ ├── passwords.php │ │ └── validation.php ├── nuxt │ ├── .editorconfig │ ├── .gitignore │ ├── assets │ │ ├── README.md │ │ ├── auth │ │ │ ├── 300220.svg │ │ │ ├── activated.svg │ │ │ ├── email.svg │ │ │ ├── error.svg │ │ │ ├── noEmail.svg │ │ │ └── notActivated.svg │ │ ├── cover.jpg │ │ ├── flags │ │ │ ├── abw.svg │ │ │ ├── afg.svg │ │ │ ├── ago.svg │ │ │ ├── aia.svg │ │ │ ├── ala.svg │ │ │ ├── alb.svg │ │ │ ├── and.svg │ │ │ ├── are.svg │ │ │ ├── arg.svg │ │ │ ├── arm.svg │ │ │ ├── asm.svg │ │ │ ├── ata.svg │ │ │ ├── atf.svg │ │ │ ├── atg.svg │ │ │ ├── aus.svg │ │ │ ├── aut.svg │ │ │ ├── aze.svg │ │ │ ├── bdi.svg │ │ │ ├── bel.svg │ │ │ ├── ben.svg │ │ │ ├── bes.svg │ │ │ ├── bfa.svg │ │ │ ├── bgd.svg │ │ │ ├── bgr.svg │ │ │ ├── bhr.svg │ │ │ ├── bhs.svg │ │ │ ├── bih.svg │ │ │ ├── blm.svg │ │ │ ├── blr.svg │ │ │ ├── blz.svg │ │ │ ├── bmu.svg │ │ │ ├── bol.svg │ │ │ ├── bra.svg │ │ │ ├── brb.svg │ │ │ ├── brn.svg │ │ │ ├── btn.svg │ │ │ ├── bvt.svg │ │ │ ├── bwa.svg │ │ │ ├── caf.svg │ │ │ ├── can.svg │ │ │ ├── cck.svg │ │ │ ├── che.svg │ │ │ ├── chl.svg │ │ │ ├── chn.svg │ │ │ ├── civ.svg │ │ │ ├── cmr.svg │ │ │ ├── cod.svg │ │ │ ├── cog.svg │ │ │ ├── cok.svg │ │ │ ├── col.svg │ │ │ ├── com.svg │ │ │ ├── cpv.svg │ │ │ ├── cri.svg │ │ │ ├── cub.svg │ │ │ ├── cuw.svg │ │ │ ├── cxr.svg │ │ │ ├── cym.svg │ │ │ ├── cyp.svg │ │ │ ├── cze.svg │ │ │ ├── deu.svg │ │ │ ├── dji.svg │ │ │ ├── dma.svg │ │ │ ├── dnk.svg │ │ │ ├── dom.svg │ │ │ ├── dza.svg │ │ │ ├── ecu.svg │ │ │ ├── egy.svg │ │ │ ├── eri.svg │ │ │ ├── esh.svg │ │ │ ├── esp.svg │ │ │ ├── est.svg │ │ │ ├── eth.svg │ │ │ ├── fin.svg │ │ │ ├── fji.svg │ │ │ ├── flk.svg │ │ │ ├── fra.svg │ │ │ ├── fro.svg │ │ │ ├── fsm.svg │ │ │ ├── gab.svg │ │ │ ├── gbr.svg │ │ │ ├── geo.svg │ │ │ ├── ggy.svg │ │ │ ├── gha.svg │ │ │ ├── gib.svg │ │ │ ├── gin.svg │ │ │ ├── glp.svg │ │ │ ├── gmb.svg │ │ │ ├── gnb.svg │ │ │ ├── gnq.svg │ │ │ ├── grc.svg │ │ │ ├── grd.svg │ │ │ ├── grl.svg │ │ │ ├── gtm.svg │ │ │ ├── guf.svg │ │ │ ├── gum.svg │ │ │ ├── guy.svg │ │ │ ├── hkg.svg │ │ │ ├── hmd.svg │ │ │ ├── hnd.svg │ │ │ ├── hrv.svg │ │ │ ├── hti.svg │ │ │ ├── hun.svg │ │ │ ├── idn.svg │ │ │ ├── imn.svg │ │ │ ├── ind.svg │ │ │ ├── iot.svg │ │ │ ├── irl.svg │ │ │ ├── irn.svg │ │ │ ├── irq.svg │ │ │ ├── isl.svg │ │ │ ├── isr.svg │ │ │ ├── ita.svg │ │ │ ├── jam.svg │ │ │ ├── jey.svg │ │ │ ├── jor.svg │ │ │ ├── jpn.svg │ │ │ ├── kaz.svg │ │ │ ├── ken.svg │ │ │ ├── kgz.svg │ │ │ ├── khm.svg │ │ │ ├── kir.svg │ │ │ ├── kna.svg │ │ │ ├── kor.svg │ │ │ ├── kwt.svg │ │ │ ├── lao.svg │ │ │ ├── lbn.svg │ │ │ ├── lbr.svg │ │ │ ├── lby.svg │ │ │ ├── lca.svg │ │ │ ├── lie.svg │ │ │ ├── lka.svg │ │ │ ├── lso.svg │ │ │ ├── ltu.svg │ │ │ ├── lux.svg │ │ │ ├── lva.svg │ │ │ ├── mac.svg │ │ │ ├── maf.svg │ │ │ ├── mar.svg │ │ │ ├── mco.svg │ │ │ ├── mda.svg │ │ │ ├── mdg.svg │ │ │ ├── mdv.svg │ │ │ ├── mex.svg │ │ │ ├── mhl.svg │ │ │ ├── mkd.svg │ │ │ ├── mli.svg │ │ │ ├── mlt.svg │ │ │ ├── mmr.svg │ │ │ ├── mne.svg │ │ │ ├── mng.svg │ │ │ ├── mnp.svg │ │ │ ├── moz.svg │ │ │ ├── mrt.svg │ │ │ ├── msr.svg │ │ │ ├── mtq.svg │ │ │ ├── mus.svg │ │ │ ├── mwi.svg │ │ │ ├── mys.svg │ │ │ ├── myt.svg │ │ │ ├── nam.svg │ │ │ ├── ncl.svg │ │ │ ├── ner.svg │ │ │ ├── nfk.svg │ │ │ ├── nga.svg │ │ │ ├── nic.svg │ │ │ ├── niu.svg │ │ │ ├── nld.svg │ │ │ ├── nor.svg │ │ │ ├── npl.svg │ │ │ ├── nru.svg │ │ │ ├── nzl.svg │ │ │ ├── omn.svg │ │ │ ├── pak.svg │ │ │ ├── pan.svg │ │ │ ├── pcn.svg │ │ │ ├── per.svg │ │ │ ├── phl.svg │ │ │ ├── plw.svg │ │ │ ├── png.svg │ │ │ ├── pol.svg │ │ │ ├── pri.svg │ │ │ ├── prk.svg │ │ │ ├── prt.svg │ │ │ ├── pry.svg │ │ │ ├── pse.svg │ │ │ ├── pyf.svg │ │ │ ├── qat.svg │ │ │ ├── reu.svg │ │ │ ├── rou.svg │ │ │ ├── rus.svg │ │ │ ├── rwa.svg │ │ │ ├── sau.svg │ │ │ ├── sdn.svg │ │ │ ├── sen.svg │ │ │ ├── sgp.svg │ │ │ ├── sgs.svg │ │ │ ├── shn.svg │ │ │ ├── sjm.svg │ │ │ ├── slb.svg │ │ │ ├── sle.svg │ │ │ ├── slv.svg │ │ │ ├── smr.svg │ │ │ ├── som.svg │ │ │ ├── spm.svg │ │ │ ├── srb.svg │ │ │ ├── ssd.svg │ │ │ ├── stp.svg │ │ │ ├── sur.svg │ │ │ ├── svk.svg │ │ │ ├── svn.svg │ │ │ ├── swe.svg │ │ │ ├── swz.svg │ │ │ ├── sxm.svg │ │ │ ├── syc.svg │ │ │ ├── syr.svg │ │ │ ├── tca.svg │ │ │ ├── tcd.svg │ │ │ ├── tgo.svg │ │ │ ├── tha.svg │ │ │ ├── tjk.svg │ │ │ ├── tkl.svg │ │ │ ├── tkm.svg │ │ │ ├── tls.svg │ │ │ ├── ton.svg │ │ │ ├── tto.svg │ │ │ ├── tun.svg │ │ │ ├── tur.svg │ │ │ ├── tuv.svg │ │ │ ├── twn.svg │ │ │ ├── tza.svg │ │ │ ├── uga.svg │ │ │ ├── ukr.svg │ │ │ ├── umi.svg │ │ │ ├── undefined.svg │ │ │ ├── unk.svg │ │ │ ├── ury.svg │ │ │ ├── usa.svg │ │ │ ├── uzb.svg │ │ │ ├── vat.svg │ │ │ ├── vct.svg │ │ │ ├── ven.svg │ │ │ ├── vgb.svg │ │ │ ├── vir.svg │ │ │ ├── vnm.svg │ │ │ ├── vut.svg │ │ │ ├── wlf.svg │ │ │ ├── wsm.svg │ │ │ ├── yem.svg │ │ │ ├── zaf.svg │ │ │ ├── zmb.svg │ │ │ └── zwe.svg │ │ ├── logo.png │ │ ├── photo.jpg │ │ └── vuetify.png │ ├── components │ │ ├── AppHrText.vue │ │ ├── AppImgLoader.vue │ │ ├── AppVuetifyLogo.vue │ │ ├── README.md │ │ ├── auth │ │ │ ├── EmailVerificationAlert.vue │ │ │ ├── EmailVerificationAlertContent.vue │ │ │ ├── SignupForm.vue │ │ │ └── SocialiteButtons.vue │ │ ├── layouts │ │ │ └── default │ │ │ │ ├── TheToolbar.vue │ │ │ │ ├── TheToolbarUserMenu.vue │ │ │ │ └── TheToolbarUserNotifications.vue │ │ ├── profile │ │ │ └── current-user │ │ │ │ ├── infoPage │ │ │ │ ├── Cover.vue │ │ │ │ ├── MainInfo.vue │ │ │ │ ├── Toolbar.vue │ │ │ │ └── ToolbarPages │ │ │ │ │ ├── Activity.vue │ │ │ │ │ ├── Friends.vue │ │ │ │ │ ├── News.vue │ │ │ │ │ └── Photo.vue │ │ │ │ └── settings │ │ │ │ ├── Content.vue │ │ │ │ ├── Menu.vue │ │ │ │ ├── MenuToolbar.vue │ │ │ │ ├── index │ │ │ │ └── Avatar.vue │ │ │ │ ├── phones │ │ │ │ └── MainPhoneSelect.vue │ │ │ │ └── soc-accounts │ │ │ │ └── SocAccounts.vue │ │ └── user │ │ │ └── UserAvatar.vue │ ├── i18n │ │ ├── messages.js │ │ ├── ru │ │ │ ├── index.js │ │ │ ├── validator.js │ │ │ └── vuetify.js │ │ ├── validator.js │ │ └── vuetify.js │ ├── layouts │ │ ├── README.md │ │ ├── default.vue │ │ ├── error.vue │ │ └── loading.html │ ├── middleware │ │ ├── README.md │ │ ├── global.js │ │ └── guest.js │ ├── mixins │ │ ├── helpers │ │ │ ├── layoutElements.js │ │ │ └── scroll.js │ │ └── validator.js │ ├── pages │ │ ├── README.md │ │ ├── auth │ │ │ ├── forgot-password.vue │ │ │ ├── reset-password │ │ │ │ ├── _token.vue │ │ │ │ └── _token │ │ │ │ │ └── _email.vue │ │ │ ├── signin.vue │ │ │ ├── signup.vue │ │ │ ├── socialite │ │ │ │ └── _providerName.vue │ │ │ └── verify-email.vue │ │ ├── index.vue │ │ └── profile │ │ │ ├── _nickname.vue │ │ │ ├── settings.vue │ │ │ └── settings │ │ │ ├── emails.vue │ │ │ ├── index.vue │ │ │ ├── notifications.vue │ │ │ ├── password.vue │ │ │ ├── phones.vue │ │ │ └── soc-accounts.vue │ ├── plugins │ │ ├── README.md │ │ ├── dayjs.js │ │ ├── filters.js │ │ ├── fontawesome.js │ │ ├── ga.js │ │ ├── vee-validate.js │ │ ├── vue-notifications.js │ │ ├── vuetify.js │ │ └── vuex-shared-mutations.js │ ├── static │ │ ├── README.md │ │ ├── favicon.ico │ │ └── v.png │ ├── store │ │ ├── README.md │ │ ├── auth.js │ │ ├── authSocialite.js │ │ ├── index.js │ │ ├── otherProfile.js │ │ ├── profileSettings.js │ │ └── user.js │ ├── styles │ │ ├── app.styl │ │ └── config.styl │ └── tools │ │ ├── Validator.js │ │ └── helpers.js └── views │ └── emails │ ├── auth │ ├── emailVerify.blade.php │ └── forgotPassword.blade.php │ └── profile │ └── emailVerify.blade.php ├── routes ├── api.php ├── api │ ├── auth.php │ ├── other.php │ └── profile.php ├── channels.php ├── console.php └── web.php ├── server.php ├── storage ├── app │ ├── .gitignore │ └── public │ │ └── .gitignore ├── clockwork │ └── .gitignore ├── debugbar │ └── .gitignore ├── framework │ ├── .gitignore │ ├── cache │ │ └── .gitignore │ ├── sessions │ │ └── .gitignore │ ├── testing │ │ └── .gitignore │ └── views │ │ └── .gitignore └── logs │ └── .gitignore ├── tests ├── CreatesApplication.php ├── Feature │ └── ExampleTest.php ├── TestCase.php └── Unit │ └── ExampleTest.php └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 4 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.yml] 15 | indent_style = space 16 | indent_size = 2 17 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | APP_CLIENT_MODE=spa 2 | APP_CLIENT_URL=http://localhost:8000 3 | 4 | APP_URL=http://localhost:8000 5 | APP_NAME="Nuxt + Laravel" 6 | APP_ENV=local 7 | APP_KEY= 8 | APP_DEBUG=true 9 | 10 | LOG_CHANNEL=stack 11 | 12 | DB_CONNECTION=mysql 13 | DB_HOST=127.0.0.1 14 | DB_PORT=3306 15 | DB_DATABASE= 16 | DB_USERNAME=root 17 | DB_PASSWORD= 18 | 19 | BROADCAST_DRIVER=log 20 | CACHE_DRIVER=file 21 | SESSION_DRIVER=file 22 | SESSION_LIFETIME=120 23 | QUEUE_DRIVER=sync 24 | 25 | REDIS_HOST=127.0.0.1 26 | REDIS_PASSWORD=null 27 | REDIS_PORT=6379 28 | 29 | MAIL_DRIVER=smtp 30 | MAIL_HOST=smtp.mailtrap.io 31 | MAIL_PORT=2525 32 | MAIL_USERNAME= 33 | MAIL_PASSWORD= 34 | MAIL_ENCRYPTION=null 35 | 36 | PUSHER_APP_ID= 37 | PUSHER_APP_KEY= 38 | PUSHER_APP_SECRET= 39 | PUSHER_APP_CLUSTER=mt1 40 | 41 | MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" 42 | MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" 43 | 44 | ################################################################################ 45 | VKONTAKTE_KEY= 46 | VKONTAKTE_SECRET= 47 | VKONTAKTE_REDIRECT_URI=/auth/socialite/vkontakte 48 | 49 | FACEBOOK_KEY= 50 | FACEBOOK_SECRET= 51 | FACEBOOK_REDIRECT_URI=/auth/socialite/facebook 52 | 53 | GOOGLE_KEY= 54 | GOOGLE_SECRET= 55 | GOOGLE_REDIRECT_URI=/auth/socialite/google 56 | 57 | INSTAGRAM_KEY= 58 | INSTAGRAM_SECRET= 59 | INSTAGRAM_REDIRECT_URI=/auth/socialite/instagram 60 | 61 | REDDIT_KEY= 62 | REDDIT_SECRET= 63 | REDDIT_REDIRECT_URI=/auth/socialite/reddit 64 | ################################################################################ 65 | 66 | RECAPTCHA_SECRET= 67 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | // module.exports = { 2 | // root: true, 3 | // parser: 'babel-eslint', 4 | // env: { 5 | // browser: true, 6 | // node: true 7 | // }, 8 | // // extends: 'standard', 9 | // // required to lint *.vue files 10 | // plugins: [ 11 | // 'html' 12 | // ], 13 | // // add your custom rules here 14 | // rules: {}, 15 | // globals: {} 16 | // } 17 | 18 | module.exports = { 19 | root: true, 20 | parserOptions: { 21 | parser: 'babel-eslint', 22 | ecmaVersion: 6 23 | }, 24 | plugins: ['vue'], 25 | env: { 26 | browser: true, 27 | node: true 28 | }, 29 | // extends: [ 30 | // "standard", 31 | // "plugin:vue/recommended" 32 | // ], 33 | extends: ['plugin:vue/essential', 'standard'], 34 | // 'extends': [ 35 | // 'plugin:vue/strongly-recommended', // strongly-recommended 36 | // 'standard', 37 | // '@vue/standard' 38 | // ], 39 | // 'plugins': [ 40 | // 'vue' 41 | // ], 42 | // "overrides": [ 43 | // { 44 | // "files": ["*.js", "*.vue"], 45 | // } 46 | // ], 47 | rules: { 48 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 49 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 50 | 51 | 'no-multiple-empty-lines': 'off' 52 | } 53 | } 54 | 55 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.css linguist-vendored 3 | *.scss linguist-vendored 4 | *.js linguist-vendored 5 | CHANGELOG.md export-ignore 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .nuxt 2 | .yalc 3 | yalc.lock 4 | 5 | /public/_nuxt 6 | /public/avatars/* 7 | !/public/avatars/forAdminSeed 8 | 9 | Procfile 10 | 11 | deploy.sh 12 | /docs 13 | 14 | /public/hot 15 | /public/storage 16 | /node_modules 17 | /storage/*.key 18 | /vendor 19 | /.idea 20 | /.vscode 21 | /.vagrant 22 | Homestead.json 23 | Homestead.yaml 24 | npm-debug.log 25 | yarn-error.log 26 | .env 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Илья 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Laravel Nuxt Auth Starter DEMO 2 | 3 | Docs: https://iliyazelenko.github.io/laravel-nuxt/features/ 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/AuthenticatableForUser.php: -------------------------------------------------------------------------------- 1 | command('inspire') 28 | // ->hourly(); 29 | } 30 | 31 | /** 32 | * Register the commands for the application. 33 | * 34 | * @return void 35 | */ 36 | protected function commands() 37 | { 38 | $this->load(__DIR__.'/Commands'); 39 | 40 | require base_path('routes/console.php'); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/Contracts/Socialite/Avatar.php: -------------------------------------------------------------------------------- 1 | userSocialite = $userSocialite; 14 | } 15 | 16 | public function get() 17 | { 18 | $data = $this->request(); 19 | 20 | return $this->getAvatarFromData($data); 21 | } 22 | 23 | /** 24 | * Возвращает результат запроса к API с указаными параметрами 25 | */ 26 | protected function request() 27 | { 28 | $responseContents = (new Client()) 29 | ->get($this->getUrl(), $this->getConfig()) 30 | ->getBody() 31 | ->getContents(); 32 | $data = json_decode($responseContents); 33 | 34 | return $data; 35 | } 36 | 37 | /** 38 | * Параметры запроса 39 | */ 40 | protected function getConfig() { 41 | return []; 42 | } 43 | 44 | /** 45 | * Адрес API 46 | */ 47 | abstract protected function getUrl(); 48 | 49 | /** 50 | * Дает ссылку на аватар из данных запроса 51 | */ 52 | abstract protected function getAvatarFromData($data); 53 | 54 | } 55 | -------------------------------------------------------------------------------- /app/Email.php: -------------------------------------------------------------------------------- 1 | where('email', $email); 22 | } 23 | 24 | 25 | public function user() { 26 | return $this->belongsTo(User::class); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/Exceptions/Handler.php: -------------------------------------------------------------------------------- 1 | true 20 | // ]; 21 | 22 | $response = $data; 23 | 24 | // if ($data) { 25 | // $response['data'] = $data; 26 | // } 27 | if ($message) { 28 | $response['message'] = $message; 29 | } 30 | 31 | return response()->json($response, $code); 32 | } 33 | 34 | 35 | /** 36 | * return error response. 37 | * 38 | * @return \Illuminate\Http\Response 39 | */ 40 | public function sendError($error, $code = 404) // , $errorMessages = [] 41 | { 42 | $response = [ 43 | // 'success' => false, 44 | 'message' => $error 45 | ]; 46 | 47 | // if(!empty($errorMessages)){ 48 | // $response['data'] = $errorMessages; 49 | // } 50 | // $response = Json::response($data, $message) 51 | 52 | return response()->json($response, $code); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /app/Http/Controllers/API/Profile/OtherProfileController.php: -------------------------------------------------------------------------------- 1 | nickname; 17 | $user = User::ofNickname($nickname)->first(); 18 | 19 | if (!$user) { 20 | return $this->sendError('Не удалось найти пользователя.', 404); 21 | } 22 | 23 | return new UserResource($user); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | check()) { 21 | return redirect('/home'); 22 | } 23 | 24 | return $next($request); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Http/Middleware/TrimStrings.php: -------------------------------------------------------------------------------- 1 | email) { 28 | $rules['email'] = 'required|' . config('validation.email'); 29 | } 30 | if (request()->nickname) { 31 | $rules['nickname'] = 'required|' . config('validation.nickname');; 32 | } 33 | 34 | return $rules; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/Http/Requests/Auth/ForgotPasswordResetRequest.php: -------------------------------------------------------------------------------- 1 | config('validation.reset_password_token'), 28 | 'email' => 'required|' . config('validation.email'), 29 | 'password' => config('validation.password') 30 | // 'password_confirmation' => 'required|string|min:6|same:password' 31 | ]; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Http/Requests/Auth/LoginRequest.php: -------------------------------------------------------------------------------- 1 | config('validation.password') 28 | ]; 29 | 30 | if (request()->email) { 31 | $rules = array_merge($rules, [ 32 | 'email' => 'required|' . config('validation.email'), 33 | // 'password' => 'required|string|min:5' 34 | ]); 35 | } 36 | if (request()->nickname) { 37 | $rules = array_merge($rules, [ 38 | 'nickname' => 'required|' . config('validation.nickname') 39 | ]); 40 | } 41 | 42 | return $rules; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/Http/Requests/Auth/SignupRequest.php: -------------------------------------------------------------------------------- 1 | 'required|unique:users,nickname|' . config('validation.nickname'), 29 | ]; 30 | 31 | if (!request()->userSoc) { 32 | $rules = array_merge($rules, [ 33 | 'form.email' => 'required|unique:emails,email|' . config('validation.email'), 34 | 'form.password' => config('validation.password') 35 | ]); 36 | } 37 | 38 | return $rules; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/Http/Requests/Profile/Current/SaveAvatarRequest.php: -------------------------------------------------------------------------------- 1 | 'image', 28 | 'cropInfo' => 'json' 29 | ]; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Http/Requests/Profile/Current/SaveEmailRequest.php: -------------------------------------------------------------------------------- 1 | 'required|' . config('validation.email'), 28 | 'public' => 'required|boolean', 29 | 'label' => 'nullable|' . config('validation.emailLabel'), 30 | 'main' => 'required|boolean' 31 | ]; 32 | } 33 | 34 | 35 | /** 36 | * Configure the validator instance. 37 | * 38 | * @param \Illuminate\Validation\Validator $validator 39 | * @return void 40 | */ 41 | public function withValidator($validator) 42 | { 43 | // $validator->after(function ($validator) { 44 | // if (request()->label) { 45 | // $validator->addRules([ 'label' => config('validation.emailLabel') ]); 46 | // } 47 | // if ($this->somethingElseIsInvalid()) { 48 | // $validator->errors()->add('field', 'Something is wrong with this field!'); 49 | // } 50 | // }); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /app/Http/Requests/Profile/Current/SavePhoneRequest.php: -------------------------------------------------------------------------------- 1 | 'required|phone:country2|unique:phones,number', 28 | 'country2' => 'required_with:number', 29 | // еще передается просто country 30 | // 'number' => 'required|unique:phones,number', // TODO . config('validation.phone'), 31 | 'label' => 'nullable|' . config('validation.phoneLabel'), 32 | 'public' => 'required|boolean', 33 | 'prefix' => 'required' 34 | ];; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/Http/Requests/Profile/Current/SetPasswordRequest.php: -------------------------------------------------------------------------------- 1 | password) { 27 | $rules = [ 28 | 'password' => config('validation.password') 29 | ]; 30 | } else { 31 | $rules = [ 32 | 'currentPassword' => config('validation.password'), 33 | 'newPassword' => config('validation.password') 34 | ]; 35 | } 36 | 37 | return $rules; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/Http/Requests/Profile/Current/SetUserDataRequest.php: -------------------------------------------------------------------------------- 1 | 'nullable|date', 28 | 'timezone' => 'nullable|timezone' 29 | ]; 30 | 31 | // TODO!!!!!!!!!!!!!!!!!!! 32 | // требовать ввода обоих полей если одно из них введено 33 | if (request()->firstName || request()->lastName) { 34 | $rules['firstName'] = 'required|' . config('validation.first_name'); 35 | $rules['lastName'] = 'required|' . config('validation.last_name'); 36 | } 37 | 38 | // if (request()->email) { 39 | // $rules['email'] = config('validation.email'); 40 | // } 41 | 42 | 43 | 44 | return $rules; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /app/Http/Requests/Profile/Other/GetUserRequest.php: -------------------------------------------------------------------------------- 1 | 'required|' . config('validation.nickname') 28 | ]; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/Http/Resources/EmailResource.php: -------------------------------------------------------------------------------- 1 | $this->id, 19 | 'email' => $this->email, 20 | 'label' => $this->label, 21 | 'verified' => $this->verified, 22 | 'public' => $this->public, 23 | 'verificationToken' => $this->verification_token, 24 | 'createdAt' => (string) $this->created_at, 25 | 'updatedAt' => (string) $this->updated_at, 26 | ]; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/Http/Resources/PhoneResource.php: -------------------------------------------------------------------------------- 1 | parse($this->number, $this->country2); 20 | $numberFormated = $phoneUtil->format($numberParsed, \libphonenumber\PhoneNumberFormat::INTERNATIONAL); 21 | // } catch (\libphonenumber\NumberParseException $e) { 22 | // 23 | // } 24 | 25 | return [ 26 | 'id' => $this->id, 27 | 'country' => $this->country, 28 | 'country2' => $this->country2, 29 | 'prefix' => $this->prefix, 30 | 'number' => $this->number, 31 | 'numberFormated' => $numberFormated, 32 | 'label' => $this->label, 33 | 'verified' => $this->verified, 34 | 'public' => $this->public, 35 | 'smsVerificationCode' => $this->sms_verification_code, 36 | 'createdAt' => (string) $this->created_at, 37 | 'updatedAt' => (string) $this->updated_at, 38 | ]; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/Mail/EmailVerify.php: -------------------------------------------------------------------------------- 1 | emailVerifyUrl = $emailVerifyUrl; 25 | $this->afterSignup = $afterSignup; 26 | } 27 | 28 | /** 29 | * Build the message. 30 | * 31 | * @return $this 32 | */ 33 | public function build() 34 | { 35 | return $this->markdown($this->afterSignup ? 'emails.auth.emailVerify' : 'emails.profile.emailVerify'); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/Mail/ForgotPassword.php: -------------------------------------------------------------------------------- 1 | resetUrlWithToken = $resetUrlWithToken; 26 | } 27 | 28 | /** 29 | * Build the message. 30 | * 31 | * @return $this 32 | */ 33 | public function build() 34 | { 35 | return $this->markdown('emails.auth.forgotPassword'); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/Phone.php: -------------------------------------------------------------------------------- 1 | where('phone', $phone); 17 | } 18 | 19 | 20 | public function user() { 21 | return $this->belongsTo(User::class); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/Providers/AppServiceProvider.php: -------------------------------------------------------------------------------- 1 | 'App\Policies\ModelPolicy', 18 | ]; 19 | 20 | /** 21 | * Register any authentication / authorization services. 22 | * 23 | * @return void 24 | */ 25 | public function boot() 26 | { 27 | $this->registerPolicies(); 28 | 29 | Passport::routes(); 30 | 31 | // Passport::tokensExpireIn(now()->addDays(15)); 32 | // 33 | // Passport::refreshTokensExpireIn(now()->addDays(30)); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/Providers/BroadcastServiceProvider.php: -------------------------------------------------------------------------------- 1 | [ 17 | 'App\Listeners\EventListener', 18 | ], 19 | \SocialiteProviders\Manager\SocialiteWasCalled::class => [ 20 | // add your listeners (aka providers) here 21 | 'SocialiteProviders\\VKontakte\\VKontakteExtendSocialite@handle', 22 | 'SocialiteProviders\\Twitter\\TwitterExtendSocialite@handle', 23 | 'SocialiteProviders\\Instagram\\InstagramExtendSocialite@handle', 24 | 'SocialiteProviders\\Reddit\\RedditExtendSocialite@handle', 25 | ], 26 | ]; 27 | 28 | /** 29 | * Register any events for your application. 30 | * 31 | * @return void 32 | */ 33 | public function boot() 34 | { 35 | parent::boot(); 36 | 37 | // 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/Services/Socialite/Avatars/Google.php: -------------------------------------------------------------------------------- 1 | image->url.'0' ?? null; 16 | } 17 | 18 | /** 19 | * Параметры запроса 20 | */ 21 | protected function getConfig() { 22 | return [ 23 | 'headers' => [ 24 | 'Authorization' => 'Bearer ' . $this->userSocialite->token, 25 | ] 26 | ]; 27 | } 28 | 29 | /** 30 | * Адрес API 31 | */ 32 | protected function getUrl() { 33 | return 'https://www.googleapis.com/plus/v1/people/me'; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/Services/Socialite/Avatars/Vkontakte.php: -------------------------------------------------------------------------------- 1 | photo_400_orig ?? null; 16 | } 17 | 18 | /** 19 | * Адрес API 20 | */ 21 | protected function getUrl() { 22 | $fields = ['photo_400_orig']; 23 | 24 | return "https://api.vk.com/method/users.get?user_ids={$this->userSocialite->getId()}&fields=" . implode(',', $fields) . "&access_token={$this->userSocialite->token}&https=1"; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/SocialiteProvider.php: -------------------------------------------------------------------------------- 1 | belongsToMany(User::class); 13 | // } 14 | } 15 | -------------------------------------------------------------------------------- /app/Traits/BaseModelTimezones.php: -------------------------------------------------------------------------------- 1 | user()) { 16 | return (parent::asDateTime($value))->timezone($user->timezone); 17 | } 18 | 19 | if ($guestTimezone = request()->cookie('guest-timezone')) { 20 | return (parent::asDateTime($value))->timezone($guestTimezone); 21 | } 22 | 23 | return parent::asDateTime($value); 24 | } 25 | 26 | /** 27 | * Convert a DateTime to a storable string. 28 | * 29 | * @param \DateTime|int $value 30 | * @return string 31 | */ 32 | public function fromDateTime($value) 33 | { 34 | // ensure that if the datetime or carbon object we were given contained a timezone, we convert to the app timezone (instead of stripping it) before outputting a storable string 35 | if ($value) { 36 | return $this->asDateTime($value)->setTimeZone(config('app.timezone'))->format($this->getDateFormat()); 37 | } 38 | return $value; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/Traits/EmailVerification.php: -------------------------------------------------------------------------------- 1 | verification_token) ? 16 | $email->verification_token 17 | : 18 | hash_hmac('sha256', str_random(40), config('app.key')); 19 | 20 | // возвращает токен 21 | return tap( 22 | $token, 23 | function ($token) use ($email) { 24 | $resetUrlWithToken = config('app.client_url') . '/auth/verify-email?token=' . $token; 25 | $afterSignup = auth()->guest(); 26 | 27 | Mail::to([ 28 | 'email' => $email->email 29 | ])->send(new EmailVerify($resetUrlWithToken, $afterSignup)); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/UserPasswordHistroy.php: -------------------------------------------------------------------------------- 1 | belongsTo(User::class); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /bootstrap/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /config/countries.php: -------------------------------------------------------------------------------- 1 | [ 6 | 'enabled' => true, 7 | 'service' => PragmaRX\Countries\Package\Services\Cache::class, 8 | 'duration' => 180, 9 | 'directory' => sys_get_temp_dir().'/__PRAGMARX_COUNTRIES__/cache', 10 | ], 11 | 12 | 'hydrate' => [ 13 | 'before' => true, 14 | 'after' => true, 15 | 'elements' => [ 16 | 'borders' => false, 17 | 'cities' => false, 18 | 'currencies' => false, 19 | 'flag' => true, 20 | 'geometry' => false, 21 | 'states' => false, 22 | 'taxes' => false, 23 | 'timezones' => true, 24 | 'timezones_times' => false, 25 | 'topology' => false, 26 | ], 27 | ], 28 | 29 | 'maps' => [ 30 | 'lca3' => 'cca3', 31 | 'currencies' => 'currency', 32 | ], 33 | 34 | 'validation' => [ 35 | 'enabled' => true, 36 | 'rules' => [ 37 | 'country' => 'name.common', 38 | 'name' => 'name.common', 39 | 'nameCommon' => 'name.common', 40 | 'cca2', 41 | 'cca2', 42 | 'cca3', 43 | 'ccn3', 44 | 'cioc', 45 | 'currencies' => 'ISO4217', 46 | 'language_short' => 'ISO639_3', 47 | ], 48 | ], 49 | 50 | ]; 51 | -------------------------------------------------------------------------------- /config/validation.php: -------------------------------------------------------------------------------- 1 | 'string|min:3|max:32|regex:/^[а-яА-Яa-zA-ZЁё][а-яА-Яa-zA-Z0-9Ёё]*?([-_.][а-яА-Яa-zA-Z0-9Ёё]+){0,3}$/u', 14 | 'email' => 'email', 15 | 'emailLabel' => 'string|min:3|max:20', 16 | 'phoneLabel' => 'string|min:3|max:20', 17 | 'password' => 'required|string|min:5', 18 | 'reset_password_token' => 'required', 19 | 'first_name' => 'alpha|min:3|max:10', 20 | 'last_name' => 'alpha|min:3|max:15' 21 | ]; 22 | -------------------------------------------------------------------------------- /config/view.php: -------------------------------------------------------------------------------- 1 | [ 17 | resource_path('views'), 18 | ], 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Compiled View Path 23 | |-------------------------------------------------------------------------- 24 | | 25 | | This option determines where all the compiled Blade templates will be 26 | | stored for your application. Typically, this is within the storage 27 | | directory. However, as usual, you are free to change this value. 28 | | 29 | */ 30 | 31 | 'compiled' => realpath(storage_path('framework/views')), 32 | 33 | ]; 34 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite 2 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_000000_create_users_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('nickname')->unique(); 19 | $table->string('password')->nullable(); // если через соц сеть то может не быть пароля 20 | $table->string('first_name')->nullable(); 21 | $table->string('last_name')->nullable(); 22 | $table->string('country')->nullable(); // ISO 3166-1 23 | $table->string('timezone')->default(config('app.timezone')); 24 | $table->boolean('gender')->nullable(); 25 | $table->date('birthday')->nullable(); 26 | $table->json('avatar')->nullable(); 27 | $table->timestamps(); 28 | }); 29 | } 30 | 31 | /** 32 | * Reverse the migrations. 33 | * 34 | * @return void 35 | */ 36 | public function down() 37 | { 38 | Schema::dropIfExists('users'); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_100000_create_password_resets_table.php: -------------------------------------------------------------------------------- 1 | string('email')->index(); 18 | $table->string('token'); 19 | $table->timestamp('created_at')->nullable(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | * 26 | * @return void 27 | */ 28 | public function down() 29 | { 30 | Schema::dropIfExists('password_resets'); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /database/migrations/2018_07_10_081531_create_users_passwords_history_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('password'); 19 | $table->unsignedInteger('user_id'); 20 | $table->timestamps(); 21 | 22 | $table->foreign('user_id') 23 | ->references('id') 24 | ->on('users') 25 | ->onDelete('CASCADE'); 26 | }); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::dropIfExists('users_passwords_history'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /database/seeds/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | call(SocialiteProvidersTableSeeder::class); 15 | $this->call(UsersTableSeeder::class); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | ./tests/Feature 14 | 15 | 16 | 17 | ./tests/Unit 18 | 19 | 20 | 21 | 22 | ./app 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews -Indexes 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Handle Authorization Header 9 | RewriteCond %{HTTP:Authorization} . 10 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 11 | # Это я сам пробовал: RewriteCond %{HTTP:Authorization} ^(.*) 12 | # Это я сам пробовал: RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] 13 | 14 | 15 | # Redirect Trailing Slashes If Not A Folder... 16 | RewriteCond %{REQUEST_FILENAME} !-d 17 | RewriteCond %{REQUEST_URI} (.+)/$ 18 | RewriteRule ^ %1 [L,R=301] 19 | 20 | # Handle Front Controller... 21 | RewriteCond %{REQUEST_FILENAME} !-d 22 | RewriteCond %{REQUEST_FILENAME} !-f 23 | RewriteRule ^ index.php [L] 24 | 25 | -------------------------------------------------------------------------------- /public/avatars/forAdminSeed/circle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iliyaZelenko/laravel-nuxt/16ecb84bbfbde00d0471244d9473da6d6454a04f/public/avatars/forAdminSeed/circle.jpg -------------------------------------------------------------------------------- /public/avatars/forAdminSeed/lg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iliyaZelenko/laravel-nuxt/16ecb84bbfbde00d0471244d9473da6d6454a04f/public/avatars/forAdminSeed/lg.jpg -------------------------------------------------------------------------------- /public/avatars/forAdminSeed/md.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iliyaZelenko/laravel-nuxt/16ecb84bbfbde00d0471244d9473da6d6454a04f/public/avatars/forAdminSeed/md.jpg -------------------------------------------------------------------------------- /public/avatars/forAdminSeed/sm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iliyaZelenko/laravel-nuxt/16ecb84bbfbde00d0471244d9473da6d6454a04f/public/avatars/forAdminSeed/sm.jpg -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /resources/lang/en/auth.php: -------------------------------------------------------------------------------- 1 | 'These credentials do not match our records.', 17 | 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /resources/lang/en/pagination.php: -------------------------------------------------------------------------------- 1 | '« Previous', 17 | 'next' => 'Next »', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /resources/lang/en/passwords.php: -------------------------------------------------------------------------------- 1 | 'Passwords must be at least six characters and match the confirmation.', 17 | 'reset' => 'Your password has been reset!', 18 | 'sent' => 'We have e-mailed your password reset link!', 19 | 'token' => 'This password reset token is invalid.', 20 | 'user' => "We can't find a user with that e-mail address.", 21 | 22 | ]; 23 | -------------------------------------------------------------------------------- /resources/lang/ru/auth.php: -------------------------------------------------------------------------------- 1 | 'Имя пользователя и пароль не совпадают.', 17 | 'throttle' => 'Слишком много попыток входа. Пожалуйста, попробуйте еще раз через :seconds секунд.', 18 | ]; 19 | -------------------------------------------------------------------------------- /resources/lang/ru/pagination.php: -------------------------------------------------------------------------------- 1 | '« Назад', 16 | 'next' => 'Вперёд »', 17 | ]; 18 | -------------------------------------------------------------------------------- /resources/lang/ru/passwords.php: -------------------------------------------------------------------------------- 1 | 'Пароль должен быть не менее пяти символов.', 16 | 'reset' => 'Ваш пароль был сброшен!', 17 | 'sent' => 'Ссылка на сброс пароля была отправлена!', 18 | 'token' => 'Ошибочный код сброса пароля.', 19 | 'user' => 'Не удалось найти пользователя по :input.', 20 | ]; 21 | -------------------------------------------------------------------------------- /resources/nuxt/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 2 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.yml] 15 | indent_style = space 16 | indent_size = 2 17 | -------------------------------------------------------------------------------- /resources/nuxt/.gitignore: -------------------------------------------------------------------------------- 1 | # Nuxt build 2 | .nuxt 3 | 4 | # Nuxt generate 5 | dist 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/README.md: -------------------------------------------------------------------------------- 1 | # ASSETS 2 | 3 | This directory contains your un-compiled assets such as LESS, SASS, or JavaScript. 4 | 5 | More information about the usage of this directory in the documentation: 6 | https://nuxtjs.org/guide/assets#webpacked 7 | 8 | **This directory is not required, you can delete it if you don't want to use it.** 9 | -------------------------------------------------------------------------------- /resources/nuxt/assets/auth/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /resources/nuxt/assets/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iliyaZelenko/laravel-nuxt/16ecb84bbfbde00d0471244d9473da6d6454a04f/resources/nuxt/assets/cover.jpg -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/abw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/ala.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/are.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/arm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/atf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/atg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/aut.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/aze.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/bdi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/bel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/ben.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/bes.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/bfa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/bgd.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/bgr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/bhr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/bhs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/bih.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/blr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Flag of Belarus 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/bol.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/brb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Flag of Barbados 5 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/bvt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/bwa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/caf.svg: -------------------------------------------------------------------------------- 1 | Flag of the Central African Republic 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/can.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/che.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/chl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/chn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/civ.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/cmr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/cod.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/cog.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/cok.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/col.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/com.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/cpv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/cri.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/cub.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/cuw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/cze.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/deu.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | Flag of Germany 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/dji.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/dnk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/dza.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/esh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/est.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/eth.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/fin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/fra.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/fro.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/fsm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/gab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/gbr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/geo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/ggy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/gha.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/gin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/gmb.svg: -------------------------------------------------------------------------------- 1 | 2 | Flag of The Gambia 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/gnb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/grc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Flag of Greece 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/grl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/guf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 13 | 14 | 15 | 16 | 21 | 22 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/guy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/hkg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/hnd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/hun.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/idn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/ind.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/irl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/irn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/isl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/ita.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/jam.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/jor.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/jpn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/ken.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/kgz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/kna.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/kor.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Flag of South Korea 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/kwt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/lao.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/lbr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/lby.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/lca.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/ltu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/lux.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/lva.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/maf.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/mar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/mco.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/mdg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/mdv.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/mhl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Flag of the Marshall Islands 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/mkd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/mli.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/mmr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/mng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/mrt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/mus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/mwi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Flag of Malawi 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/nam.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/ner.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/nga.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/niu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flag of Niue 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/nld.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/nor.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/nru.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/pak.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Flag of Pakistan 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/pan.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/per.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/plw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/pol.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/pri.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | the star is in the center of gravity of the triangle, so the x-pos is irrational (tan(30 deg) * 15) 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/prk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/pse.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/qat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/reu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/rou.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/rus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/rwa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Flag of Rwanda 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/sdn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/sen.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/sgp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/sjm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/slb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/sle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/som.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/ssd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Flag of South Sudan 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/stp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/sur.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/swe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/syc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/syr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/tcd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/tgo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/tha.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/tkl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/tls.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/ton.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/tto.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/tun.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/tur.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/tuv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/twn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/tza.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/ukr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/umi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/undefined.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/usa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/uzb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/vct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/ven.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/vnm.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | Flag of Vietnam 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/wlf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/wsm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/yem.svg: -------------------------------------------------------------------------------- 1 | 2 | flag of Yemen 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/assets/flags/zaf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /resources/nuxt/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iliyaZelenko/laravel-nuxt/16ecb84bbfbde00d0471244d9473da6d6454a04f/resources/nuxt/assets/logo.png -------------------------------------------------------------------------------- /resources/nuxt/assets/photo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iliyaZelenko/laravel-nuxt/16ecb84bbfbde00d0471244d9473da6d6454a04f/resources/nuxt/assets/photo.jpg -------------------------------------------------------------------------------- /resources/nuxt/assets/vuetify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iliyaZelenko/laravel-nuxt/16ecb84bbfbde00d0471244d9473da6d6454a04f/resources/nuxt/assets/vuetify.png -------------------------------------------------------------------------------- /resources/nuxt/components/README.md: -------------------------------------------------------------------------------- 1 | # COMPONENTS 2 | 3 | The components directory contains your Vue.js Components. 4 | Nuxt.js doesn't supercharge these components. 5 | 6 | **This directory is not required, you can delete it if you don't want to use it.** 7 | -------------------------------------------------------------------------------- /resources/nuxt/components/profile/current-user/infoPage/ToolbarPages/Photo.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /resources/nuxt/components/profile/current-user/settings/Content.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | 42 | -------------------------------------------------------------------------------- /resources/nuxt/i18n/messages.js: -------------------------------------------------------------------------------- 1 | import ru from './ru/index' 2 | 3 | export default { 4 | ru 5 | } 6 | -------------------------------------------------------------------------------- /resources/nuxt/i18n/ru/index.js: -------------------------------------------------------------------------------- 1 | export default { 2 | auth: { 3 | selectAcc: 'Выберите аккаунт', 4 | loginBtn: 'Войти', 5 | groups: ['Резчики', 'Печатники', 'Кладовщики', 'Менеджеры'] 6 | }, 7 | mainPage: { 8 | actions: { 9 | addOrder: 'Добавить заказ', 10 | userManagement: 'Управление аккаунтами' 11 | } 12 | }, 13 | roles: ['Резчик', 'Печатник', 'Кладовщик', 'Менеджер'], 14 | form: { 15 | select: { 16 | notSelected: 'Не выбрано' 17 | } 18 | }, 19 | menu: { 20 | mainPage: 'Главная' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /resources/nuxt/i18n/ru/validator.js: -------------------------------------------------------------------------------- 1 | export default { 2 | messages: { 3 | 4 | }, 5 | attributes: { 6 | email: 'почта', 7 | // remember: 'запомнить меня', 8 | firstName: 'имя', 9 | lastName: 'фамииля', 10 | nickname: 'ник', 11 | // nicknameOrEmail: 'почта/ник', 12 | password: 'пароль', 13 | // passwordConfirm: 'повтор пароля', 14 | currentPassword: 'текущий пароль', 15 | newPassword: 'новый пароль', 16 | gender: 'пол', 17 | timezone: 'временная зона', 18 | country: 'страна', 19 | phone: 'телефон', 20 | birthday: 'день рождения', 21 | emailLabel: 'метка', 22 | phoneLabel: 'метка' 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /resources/nuxt/i18n/ru/vuetify.js: -------------------------------------------------------------------------------- 1 | export default { 2 | dataIterator: { 3 | rowsPerPageText: 'Элементов на странице:', 4 | rowsPerPageAll: 'Все', 5 | pageText: '{0}-{1} из {2}', 6 | noResultsText: 'В результате поиска ничего не найдено', 7 | nextPage: 'Следующая страница', 8 | prevPage: 'Предыдущая страница' 9 | }, 10 | dataTable: { 11 | rowsPerPageText: 'Строк на странице:' 12 | }, 13 | noDataText: 'Нет данных для отображения' 14 | } 15 | -------------------------------------------------------------------------------- /resources/nuxt/i18n/validator.js: -------------------------------------------------------------------------------- 1 | import ru from './ru/validator' 2 | 3 | export default { 4 | ru 5 | } 6 | -------------------------------------------------------------------------------- /resources/nuxt/i18n/vuetify.js: -------------------------------------------------------------------------------- 1 | import ru from './ru/vuetify' 2 | 3 | export default { 4 | ru 5 | } 6 | -------------------------------------------------------------------------------- /resources/nuxt/layouts/README.md: -------------------------------------------------------------------------------- 1 | # LAYOUTS 2 | 3 | This directory contains your Application Layouts. 4 | 5 | More information about the usage of this directory in the documentation: 6 | https://nuxtjs.org/guide/views#layouts 7 | 8 | **This directory is not required, you can delete it if you don't want to use it.** 9 | -------------------------------------------------------------------------------- /resources/nuxt/layouts/error.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 31 | -------------------------------------------------------------------------------- /resources/nuxt/middleware/README.md: -------------------------------------------------------------------------------- 1 | # MIDDLEWARE 2 | 3 | This directory contains your Application Middleware. 4 | The middleware lets you define custom function to be ran before rendering a page or a group of pages (layouts). 5 | 6 | More information about the usage of this directory in the documentation: 7 | https://nuxtjs.org/guide/routing#middleware 8 | 9 | **This directory is not required, you can delete it if you don't want to use it.** 10 | -------------------------------------------------------------------------------- /resources/nuxt/middleware/global.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | 3 | export default async function ({ req, app }) { 4 | if (!app.$cookies.get('guest-timezone') || !app.$cookies.get('uest-country')) { 5 | // const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone 6 | const info = (await axios.get('https://ipapi.co/json/')).data 7 | const { country, timezone } = info 8 | const maxAge = 60 * 60 * 24 * 7 9 | 10 | app.$cookies.set('guest-timezone', timezone, { maxAge }) 11 | app.$cookies.set('guest-country', country, { maxAge }) 12 | app.$cookies.set('guest-all-info', info, { maxAge }) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /resources/nuxt/middleware/guest.js: -------------------------------------------------------------------------------- 1 | import { msg } from '~/tools/helpers' 2 | 3 | export default function ({ store, redirect, route, app }) { 4 | // If the user is not authenticated 5 | if (store.state.nuxtAuth.loggedIn) { // store.nuxtAuth.user 6 | msg.error(`Страница ${route.fullPath} доступна только для гостей.`) 7 | return redirect('/profile/' + app.$auth.user.nickname) // '/profile/current-user' 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /resources/nuxt/mixins/helpers/scroll.js: -------------------------------------------------------------------------------- 1 | const prefix = 'mixinsHelperScroll_' // префикс $_ не работает как писали в советах стиля, компонент не видит переменную, это очень странно, разбирался с эти 30-60 мин 2 | 3 | // !!! Те у которых префикс $_ ($ и _ тоже вроде) не проксируются, поэтмоу к ним нужно обращатся напрямую через $data и еще они что-то не реактивны по видимому 4 | 5 | export default { 6 | data: () => ({ 7 | // scrolled: null 8 | [`${prefix}scrolled`]: null 9 | // [prefix + 'scrolled']: null 10 | }), 11 | // methods: { 12 | // async validateByMixin (data) { 13 | // const valid = await this.$validator.validateAll(data) 14 | // 15 | // return valid 16 | // } 17 | // }, 18 | // computed: { 19 | // validator () { 20 | // return validator 21 | // } 22 | // }, 23 | beforeMount () { 24 | window.addEventListener('scroll', () => { 25 | this[prefix + 'scrolled'] = Math.max(window.pageYOffset, document.documentElement.scrollTop, document.body.scrollTop) 26 | }) 27 | } 28 | } 29 | 30 | // return new Promise(async (resolve, reject) => { 31 | // try { 32 | // const valid = await this.$validator.validateAll(data) 33 | // 34 | // if (!valid) { 35 | // let errorMsg = '' 36 | // for (let err of this.validator.errors.items) { 37 | // errorMsg += err.msg + '\n' 38 | // } 39 | // 40 | // resolve({ 41 | // valid, 42 | // errorMsg 43 | // }) 44 | // return 45 | // } 46 | // 47 | // resolve({ valid }) 48 | // } catch (e) { 49 | // reject(e) 50 | // } 51 | -------------------------------------------------------------------------------- /resources/nuxt/mixins/validator.js: -------------------------------------------------------------------------------- 1 | import { rules, validator } from '~/tools/Validator' 2 | 3 | export default { 4 | data: () => ({ 5 | validatorRules: rules 6 | }), 7 | methods: { 8 | async validateByMixin (data) { 9 | const valid = await this.$validator.validateAll(data) 10 | 11 | return valid 12 | } 13 | }, 14 | computed: { 15 | validator () { 16 | return validator 17 | } 18 | } 19 | } 20 | 21 | // return new Promise(async (resolve, reject) => { 22 | // try { 23 | // const valid = await this.$validator.validateAll(data) 24 | // 25 | // if (!valid) { 26 | // let errorMsg = '' 27 | // for (let err of this.validator.errors.items) { 28 | // errorMsg += err.msg + '\n' 29 | // } 30 | // 31 | // resolve({ 32 | // valid, 33 | // errorMsg 34 | // }) 35 | // return 36 | // } 37 | // 38 | // resolve({ valid }) 39 | // } catch (e) { 40 | // reject(e) 41 | // } 42 | -------------------------------------------------------------------------------- /resources/nuxt/pages/README.md: -------------------------------------------------------------------------------- 1 | # PAGES 2 | 3 | This directory contains your Application Views and Routes. 4 | The framework reads all the .vue files inside this directory and create the router of your application. 5 | 6 | More information about the usage of this directory in the documentation: 7 | https://nuxtjs.org/guide/routing 8 | -------------------------------------------------------------------------------- /resources/nuxt/pages/auth/reset-password/_token.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /resources/nuxt/pages/auth/verify-email.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 34 | -------------------------------------------------------------------------------- /resources/nuxt/plugins/README.md: -------------------------------------------------------------------------------- 1 | # PLUGINS 2 | 3 | This directory contains your Javascript plugins that you want to run before instantiating the root vue.js application. 4 | 5 | More information about the usage of this directory in the documentation: 6 | https://nuxtjs.org/guide/plugins 7 | 8 | **This directory is not required, you can delete it if you don't want to use it.** 9 | -------------------------------------------------------------------------------- /resources/nuxt/plugins/dayjs.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import dayjs from 'dayjs' 3 | import 'dayjs/locale/ru' 4 | import relativeTime from 'dayjs/plugin/relativeTime' 5 | 6 | // import utcPlugin from 'dayjs/plugin/utc' 7 | // dayjs.extend(utcPlugin) 8 | 9 | dayjs.locale('ru') // use Spanish locale globally 10 | dayjs.extend(relativeTime) 11 | 12 | Vue.prototype.$dayjs = dayjs 13 | 14 | // console.log(Vue.prototype.$dayjs().from(dayjs('1990'))) 15 | -------------------------------------------------------------------------------- /resources/nuxt/plugins/filters.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | 3 | Vue.filter('truncate', (text, stop = 15, clamp) => { 4 | if (!text) { 5 | return text 6 | } 7 | return text.slice(0, stop) + (stop < text.length ? clamp || '...' : '') 8 | }) 9 | 10 | Vue.filter('date', date => { 11 | if (!date) { 12 | return null 13 | } 14 | return Vue.prototype.$dayjs(date).format(process.env.dateFormats.main) 15 | }) 16 | 17 | Vue.filter('datetime', date => { 18 | if (!date) { 19 | return null 20 | } 21 | return Vue.prototype.$dayjs(date).format(process.env.dateFormats.datetime) 22 | }) 23 | -------------------------------------------------------------------------------- /resources/nuxt/plugins/fontawesome.js: -------------------------------------------------------------------------------- 1 | // https://fontawesome.com/how-to-use/use-with-node-js 2 | import fontawesome from '@fortawesome/fontawesome' 3 | import faVk from '@fortawesome/fontawesome-free-brands/faVk' 4 | import faFacebook from '@fortawesome/fontawesome-free-brands/faFacebook' 5 | import faGoogle from '@fortawesome/fontawesome-free-brands/faGooglePlus' 6 | import faTwitter from '@fortawesome/fontawesome-free-brands/faTwitter' 7 | import faInstagram from '@fortawesome/fontawesome-free-brands/faInstagram' 8 | import faReddit from '@fortawesome/fontawesome-free-brands/faReddit' 9 | 10 | fontawesome.library.add(faVk) 11 | fontawesome.library.add(faFacebook) 12 | fontawesome.library.add(faGoogle) 13 | fontawesome.library.add(faTwitter) 14 | fontawesome.library.add(faInstagram) 15 | fontawesome.library.add(faReddit) 16 | -------------------------------------------------------------------------------- /resources/nuxt/plugins/ga.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | // Replace UA-XXXXXXXX-X by your Google Analytics tracking ID. 4 | 5 | export default ({ app }) => { 6 | /* 7 | ** Only run on client-side and only in production mode 8 | */ 9 | if (process.env.NODE_ENV !== 'production') return 10 | /* 11 | ** Include Google Analytics Script 12 | */ 13 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 14 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 15 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 16 | })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 17 | /* 18 | ** Set the current page 19 | */ 20 | ga('create', 'UA-XXXXXXXX-X', 'auto') 21 | /* 22 | ** Every time the route changes (fired on initialization too) 23 | */ 24 | app.router.afterEach((to, from) => { 25 | /* 26 | ** We tell Google Analytics to add a `pageview` 27 | */ 28 | ga('set', 'page', to.fullPath) 29 | ga('send', 'pageview') 30 | }) 31 | } 32 | -------------------------------------------------------------------------------- /resources/nuxt/plugins/vee-validate.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import VeeValidate, { Validator } from 'vee-validate' 3 | import dictionary from '~/i18n/validator' 4 | 5 | import { getLocale } from '~/tools/helpers' 6 | import ru from 'vee-validate/dist/locale/ru' // TODO здесь менять чтобы изменился язык 7 | 8 | const locale = getLocale() 9 | 10 | Validator.localize(locale, ru) 11 | Vue.use(VeeValidate, { 12 | locale, 13 | dictionary 14 | }) 15 | -------------------------------------------------------------------------------- /resources/nuxt/plugins/vue-notifications.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | // import { msg as toast } from '~/tools/helpers' 3 | import iziToast from 'izitoast' 4 | import VueNotifications from 'vue-notifications' 5 | import 'izitoast/dist/css/iziToast.min.css' 6 | import { msg } from '~/tools/helpers' 7 | 8 | const toast = (title = '', message = '', type = 'info', timeout = 3000) => { 9 | if (type === VueNotifications.types.warn) type = 'warning' 10 | 11 | return iziToast[type]({title, message, timeout}) 12 | } 13 | 14 | // Код добавляет виды сообщений в toast которые можно вызывать(Vue.prototype.$notify) 15 | // через Object.assing(this, msg) не почему-то не получилось 16 | for (let key in msg) { 17 | if (msg.hasOwnProperty(key)) { 18 | toast[key] = msg[key] 19 | } 20 | } 21 | 22 | Vue.prototype.$notify = toast 23 | 24 | const options = { 25 | success: toast, 26 | error: toast, 27 | info: toast, 28 | warn: toast 29 | } 30 | 31 | Vue.use(VueNotifications, options) 32 | -------------------------------------------------------------------------------- /resources/nuxt/plugins/vuetify.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuetify from 'vuetify' 3 | 4 | import { getLocale } from '~/tools/helpers' 5 | import locales from '~/i18n/vuetify' 6 | 7 | Vue.use(Vuetify, { 8 | lang: { 9 | locales: locales, 10 | current: getLocale() 11 | } 12 | }) 13 | // вот так менять язык динамично: this.$vuetify.lang.current = 'en' 14 | 15 | // Хороший цвет: '#e1f6f4' 16 | Vue.use(Vuetify, { 17 | theme: { 18 | primary: '#1976D2', 19 | secondary: '#202124', // '#424242', 20 | accent: '#82B1FF', 21 | error: '#FF5252', 22 | info: '#2196F3', 23 | success: '#4CAF50', 24 | warning: '#FFC107', 25 | footer: '#f1f3f4' 26 | 27 | // primary: '#00adb5', // '#A6CB45', // '#66BB6A', 28 | // secondary: '#393e46', // '#FAFAFA', #e1f6f4 29 | // accent: '#a4f9f1', // '#e1f6f4', // '#388E3C', 30 | // error: '#f44336', 31 | // warning: '#FFB74D', 32 | // info: '#2196f3', 33 | // success: '#4caf50' 34 | } 35 | }) 36 | // 37 | // , { 38 | // theme: { 39 | // primary: '#00adb5', // '#A6CB45', // '#66BB6A', 40 | // secondary: '#393e46', // '#FAFAFA', 41 | // accent: '#388E3C', 42 | // error: '#f44336', 43 | // warning: '#FFB74D', 44 | // info: '#2196f3', 45 | // success: '#4caf50' 46 | // } 47 | // } 48 | -------------------------------------------------------------------------------- /resources/nuxt/plugins/vuex-shared-mutations.js: -------------------------------------------------------------------------------- 1 | import createMutationsSharer from 'vuex-shared-mutations' 2 | 3 | export default ({store}) => { 4 | createMutationsSharer({ 5 | predicate: ['nuxtAuth/SET'] 6 | })(store) 7 | } 8 | -------------------------------------------------------------------------------- /resources/nuxt/static/README.md: -------------------------------------------------------------------------------- 1 | # STATIC 2 | 3 | This directory contains your static files. 4 | Each file inside this directory is mapped to /. 5 | 6 | Example: /static/robots.txt is mapped as /robots.txt. 7 | 8 | More information about the usage of this directory in the documentation: 9 | https://nuxtjs.org/guide/assets#static 10 | 11 | **This directory is not required, you can delete it if you don't want to use it.** 12 | -------------------------------------------------------------------------------- /resources/nuxt/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iliyaZelenko/laravel-nuxt/16ecb84bbfbde00d0471244d9473da6d6454a04f/resources/nuxt/static/favicon.ico -------------------------------------------------------------------------------- /resources/nuxt/static/v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iliyaZelenko/laravel-nuxt/16ecb84bbfbde00d0471244d9473da6d6454a04f/resources/nuxt/static/v.png -------------------------------------------------------------------------------- /resources/nuxt/store/README.md: -------------------------------------------------------------------------------- 1 | # STORE 2 | 3 | This directory contains your Vuex Store files. 4 | Vuex Store option is implemented in the Nuxt.js framework. 5 | Creating a index.js file in this directory activate the option in the framework automatically. 6 | 7 | More information about the usage of this directory in the documentation: 8 | https://nuxtjs.org/guide/vuex-store 9 | 10 | **This directory is not required, you can delete it if you don't want to use it.** 11 | -------------------------------------------------------------------------------- /resources/nuxt/store/index.js: -------------------------------------------------------------------------------- 1 | // import * as Cookie from 'js-cookie' 2 | 3 | export const state = () => ({ 4 | sidebar: false 5 | }) 6 | 7 | export const mutations = { 8 | toggleSidebar (state) { 9 | state.sidebar = !state.sidebar 10 | } 11 | } 12 | 13 | export const actions = { 14 | // async nuxtServerInit ({ app }) { 15 | // if (!Cookie.get('guest-timezone') || !Cookie.get('uest-country')) { 16 | // const a = JSON.parse(await app.$axios.get('http://ip-api.com/json')) // { timezone, countryCode } 17 | // console.log(a) 18 | // Cookie.set('guest-timezone', timezone, {expires: 7}) 19 | // Cookie.set('guest-country', countryCode, {expires: 7}) 20 | // }, 21 | getTimezones () { 22 | return this.$axios.$get('/api/timezones') 23 | }, 24 | getCountries () { 25 | return this.$axios.$get('/api/countries') 26 | }, 27 | getPhonePrefixes () { 28 | return this.$axios.$get('/api/phone-prefixes') 29 | }, 30 | getSocialiteProviders () { 31 | return this.$axios.$get('/api/socialite-providers') 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /resources/nuxt/store/otherProfile.js: -------------------------------------------------------------------------------- 1 | // import { msg } from '~/tools/helpers' 2 | // import { request } from '~/tools/Validator' 3 | 4 | export const actions = { 5 | async getUser ({ dispatch, commit }, nickname) { 6 | // try { 7 | // return request(async () => { const user = 8 | return this.$axios.$post('/api/profile/other/get-user', { nickname }) 9 | // return user 10 | // }, { ifCathThenReturn: null }) // throwErr: true 11 | // 12 | // return user 13 | // } catch ({ response }) { 14 | // return null 15 | // } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /resources/nuxt/store/user.js: -------------------------------------------------------------------------------- 1 | // import { serverValidatorShowErrors, msg } from '~/tools/helpers' 2 | // export const state = () => ({ 3 | // list: this.$auth.user 4 | // }) 5 | 6 | // export const mutations = { 7 | // add (state, text) { 8 | // state.list.push({ 9 | // text: text, 10 | // done: false 11 | // }) 12 | // }, 13 | // toggle (state, todo) { 14 | // todo.done = !todo.done 15 | // } 16 | // } 17 | // console.log(store) 18 | // const defaultUser = this 19 | 20 | // console.log(defaultUser) 21 | 22 | export const getters = { 23 | userAvatar: (state, getters, store) => 24 | (user = store.nuxtAuth.user, sizeName) => 25 | user.avatar[sizeName], 26 | // typeof user.avatar === 'string' ? user.avatar : user.avatar[sizeName], // || require('~/assets/no-avatar.png') 27 | // userFullName: (state, getters, store) => 28 | // (user = store.nuxtAuth.user) => 29 | // user.firstName && user.lastName ? user.firstName + ' ' + user.lastName : null, 30 | userCanUseEmail: (state, getters, store) => 31 | (user = store.nuxtAuth.user) => 32 | user && user.mainEmail && user.mainEmail.verified, 33 | // то чно ниже это !$auth.user.activated 34 | userHaveGlobalMessage: (state, getters, store) => 35 | (user = store.nuxtAuth.user) => 36 | user && (!user.mainEmail || !user.mainEmail.verified || !user.activated) 37 | } 38 | 39 | // export const actions = {} 40 | -------------------------------------------------------------------------------- /resources/nuxt/styles/app.styl: -------------------------------------------------------------------------------- 1 | @require '~vuetify/src/stylus/settings/_colors' 2 | @require '~vuetify/src/stylus/settings/_theme' 3 | 4 | // $theme := { 5 | // primary:"#fff" 6 | // accent: "#fff" 7 | // secondary: "#fff" 8 | // info: "#fff" 9 | // warning: "#fff" 10 | // error: $red.base 11 | // success: $green.base 12 | // } 13 | 14 | // $theme:= { 15 | // primary: #00adb5, // '#A6CB45', // '#66BB6A', 16 | // secondary: #393e46, // '#FAFAFA', 17 | // accent: #388E3C, 18 | // error: #f44336, 19 | // warning: #FFB74D, 20 | // info: #2196f3, 21 | // success: #4caf50 22 | // } 23 | 24 | // Если для футера $material-light.app-bar = #388E3C green lighten-4 25 | // $material-dark.app-bar = #222831 // #6A8347 // #43A047 26 | 27 | 28 | $material-light.background = url(http://qaru.site/img/43ba263df12f60c20cad596e7220cd51.jpg); // #fafafa url(https://cdn.sstatic.net/Sites/unix/img/bg-site.png) repeat center top !important unset // #eeeeee // #E8F5E9 29 | 30 | // $material-light.cards = #C8E6C9 31 | 32 | @require '~vuetify/src/stylus/main.styl' 33 | 34 | .application 35 | // background-position: center !important; 36 | // background-repeat: no-repeat !important; 37 | // background-size: cover !important; 38 | 39 | .page 40 | @extend .fade-transition 41 | 42 | .v-alert 43 | border-radius: 5px; 44 | 45 | .app-border-all-round 46 | border-radius: 25px; 47 | 48 | .country-flag 49 | border: 1px solid #eaecf0; 50 | width: 100%; 51 | -------------------------------------------------------------------------------- /resources/nuxt/styles/config.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iliyaZelenko/laravel-nuxt/16ecb84bbfbde00d0471244d9473da6d6454a04f/resources/nuxt/styles/config.styl -------------------------------------------------------------------------------- /resources/nuxt/tools/helpers.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Cookie from 'js-cookie' 3 | // import { msg as msgForThisFile } from '~/tools/helpers' 4 | 5 | const getFuncForShowMsg = (mainType) => (title, message, type, timeout) => { 6 | // Vue.prototype.$notify не будет доступен если просто записать в экспортированную переменную которую 7 | const notify = Vue.prototype.$notify 8 | notify(title, message, mainType, timeout) 9 | } 10 | 11 | // массив функций обозначающих тип сообщения 12 | export const msg = { 13 | success: getFuncForShowMsg('success'), 14 | info: getFuncForShowMsg('info'), 15 | warn: getFuncForShowMsg('warn'), 16 | error: getFuncForShowMsg('error') 17 | } 18 | 19 | // возвращает путь флага 20 | export function getFlag (flagName) { 21 | try { 22 | return require(`~/assets/flags/${flagName.toLowerCase()}.svg`) 23 | } catch (e) { 24 | return require('~/assets/flags/undefined.svg') 25 | } 26 | } 27 | 28 | // возвращает локаль 29 | export function getLocale () { 30 | if (Cookie.get('locale')) { 31 | return Cookie.get('locale') 32 | } 33 | 34 | return process.env.localeDefault 35 | } 36 | 37 | // ставит локаль 38 | export function setLocale (locale) { 39 | Cookie.set('locale', locale) 40 | } 41 | -------------------------------------------------------------------------------- /resources/views/emails/auth/emailVerify.blade.php: -------------------------------------------------------------------------------- 1 | @component('mail::message') 2 | # Спасибо за регестрацию 3 | 4 | Нажмите чтобы подтвердить электронный адрес. 5 | 6 | @component('mail::button', ['url' => $emailVerifyUrl]) 7 | Подтвердить 8 | @endcomponent 9 | 10 | Спасибо,
11 | {{ config('app.name') }} 12 | @endcomponent 13 | -------------------------------------------------------------------------------- /resources/views/emails/auth/forgotPassword.blade.php: -------------------------------------------------------------------------------- 1 | @component('mail::message') 2 | # Последний шаг 3 | 4 | Нажмите кнопку чтобы продолжить. 5 | 6 | @component('mail::button', ['url' => $resetUrlWithToken]) 7 | Продолжить 8 | @endcomponent 9 | 10 | Спасибо,
11 | {{ config('app.name') }} 12 | @endcomponent 13 | -------------------------------------------------------------------------------- /resources/views/emails/profile/emailVerify.blade.php: -------------------------------------------------------------------------------- 1 | @component('mail::message') 2 | # Нажмите чтобы подтвердить электронный адрес. 3 | 4 | @component('mail::button', ['url' => $emailVerifyUrl]) 5 | Подтвердить 6 | @endcomponent 7 | 8 | Спасибо,
9 | {{ config('app.name') }} 10 | @endcomponent 11 | -------------------------------------------------------------------------------- /routes/api.php: -------------------------------------------------------------------------------- 1 | group(function () { 18 | require base_path('routes/api/auth.php'); 19 | require base_path('routes/api/profile.php'); 20 | require base_path('routes/api/other.php'); 21 | }); 22 | -------------------------------------------------------------------------------- /routes/api/auth.php: -------------------------------------------------------------------------------- 1 | 'Auth', 'prefix' => 'auth'], function () { 4 | // для входа по id пользователя 5 | // if (config('app.env') === 'local') { 6 | Route::post('login-by-id', 'AuthController@devAuthInfoByUser'); 7 | // } 8 | 9 | Route::prefix('soc')->group(function () { 10 | Route::post('get-redirect-url', 'SocialiteController@getRedirectUrl'); 11 | Route::post('get-soc-user', 'SocialiteController@getUserSocialite'); 12 | Route::middleware(['auth:api'])->group(function () { 13 | Route::post('save-soc-acc', 'SocialiteController@loggedInUserSaveSocAcc'); 14 | Route::post('delete-soc-acc', 'SocialiteController@loggedInUserDeleteSocAcc'); 15 | }); 16 | }); 17 | 18 | Route::middleware(['guest'])->group(function () { 19 | Route::post('login', 'AuthController@login'); 20 | Route::post('signup', 'AuthController@signup'); 21 | 22 | Route::post('reset-password-email', 'ForgotPasswordController@sendResetLinkEmail'); 23 | Route::post('reset-password', 'ResetPasswordController@reset'); 24 | }); 25 | Route::middleware(['auth:api'])->group(function () { 26 | Route::post('logout', 'AuthController@logout'); 27 | Route::get('user', 'AuthController@user'); 28 | Route::post('verify', 'AuthController@emailVerify'); 29 | // Route::middleware(['throttle:5,1'])->group(function () { 30 | Route::post('repeat-verification-mail', 'AuthController@repeatVerificationMail'); 31 | // }); 32 | }); 33 | }); 34 | -------------------------------------------------------------------------------- /routes/api/profile.php: -------------------------------------------------------------------------------- 1 | 'Profile', 'prefix' => 'profile'], function () { 4 | // Текущий пользователь 5 | Route::group(['prefix' => 'current', 'middleware' => ['auth:api']], function () { 6 | Route::post('set-password', 'ProfileController@setPassword'); 7 | Route::post('set-user-data', 'ProfileController@setUserData'); 8 | Route::post('set-avatar', 'ProfileController@setAvatar'); 9 | 10 | Route::post('save-email', 'ProfileController@saveEmail'); 11 | Route::post('delete-email', 'ProfileController@deleteEmail'); 12 | Route::post('set-main-email', 'ProfileController@setMainEmail'); 13 | Route::post('change-public-email', 'ProfileController@changePublicEmail'); 14 | 15 | Route::post('save-phone', 'ProfileController@savePhone'); 16 | Route::post('delete-phone', 'ProfileController@deletePhone'); 17 | Route::post('set-main-phone', 'ProfileController@setMainPhone'); 18 | Route::post('change-public-phone', 'ProfileController@changePublicPhone'); 19 | 20 | Route::post('get-passwords-history', 'ProfileController@getPasswordsHistory'); 21 | }); 22 | 23 | // Другой пользователь 24 | Route::group(['prefix' => 'other'], function () { 25 | Route::post('get-user', 'OtherProfileController@getUser'); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /routes/channels.php: -------------------------------------------------------------------------------- 1 | id === (int) $id; 16 | }); 17 | -------------------------------------------------------------------------------- /routes/console.php: -------------------------------------------------------------------------------- 1 | comment(Inspiring::quote()); 18 | })->describe('Display an inspiring quote'); 19 | -------------------------------------------------------------------------------- /server.php: -------------------------------------------------------------------------------- 1 | 8 | */ 9 | 10 | $uri = urldecode( 11 | parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) 12 | ); 13 | 14 | // This file allows us to emulate Apache's "mod_rewrite" functionality from the 15 | // built-in PHP web server. This provides a convenient way to test a Laravel 16 | // application without having installed a "real" web server software here. 17 | if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { 18 | return false; 19 | } 20 | 21 | require_once __DIR__.'/public/index.php'; 22 | -------------------------------------------------------------------------------- /storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !public/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /storage/app/public/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/clockwork/.gitignore: -------------------------------------------------------------------------------- 1 | *.json 2 | -------------------------------------------------------------------------------- /storage/debugbar/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/.gitignore: -------------------------------------------------------------------------------- 1 | config.php 2 | routes.php 3 | schedule-* 4 | compiled.php 5 | services.json 6 | events.scanned.php 7 | routes.scanned.php 8 | down 9 | -------------------------------------------------------------------------------- /storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/testing/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /tests/CreatesApplication.php: -------------------------------------------------------------------------------- 1 | make(Kernel::class)->bootstrap(); 19 | 20 | return $app; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /tests/Feature/ExampleTest.php: -------------------------------------------------------------------------------- 1 | get('/'); 18 | 19 | $response->assertStatus(200); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 18 | } 19 | } 20 | --------------------------------------------------------------------------------