├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .postcssrc.js
├── .stylintrc
├── LICENSE
├── README.md
├── package-lock.json
├── package.json
├── quasar.conf.js
└── src
├── App.vue
├── assets
├── quasar-logo-full.svg
└── sad.svg
├── components
└── .gitkeep
├── css
├── app.styl
└── themes
│ ├── common.variables.styl
│ ├── variables.ios.styl
│ └── variables.mat.styl
├── index.template.html
├── layouts
└── default.vue
├── pages
├── 404.vue
├── account.vue
├── index.vue
└── login.vue
├── plugins
├── .gitkeep
└── axios.js
├── router
├── index.js
└── routes.js
├── statics
├── icons
│ ├── apple-icon-152x152.png
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── icon-128x128.png
│ ├── icon-192x192.png
│ ├── icon-256x256.png
│ ├── icon-384x384.png
│ ├── icon-512x512.png
│ └── ms-icon-144x144.png
└── quasar-logo.png
└── store
├── auth
├── actions.js
├── getters.js
├── index.js
├── mutations.js
└── state.js
└── index.js
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/preset-env", {
5 | "modules": false,
6 | "loose": false,
7 | "useBuiltIns": "usage"
8 | }
9 | ],
10 | [
11 | "@babel/preset-stage-2", {
12 | "modules": false,
13 | "loose": false,
14 | "useBuiltIns": true,
15 | "decoratorsLegacy": true
16 | }
17 | ]
18 | ],
19 | "plugins": [
20 | [
21 | "@babel/transform-runtime", {
22 | "polyfill": false,
23 | "regenerator": false
24 | }
25 | ]
26 | ],
27 | "comments": false
28 | }
29 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /dist
2 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | parserOptions: {
4 | parser: 'babel-eslint',
5 | sourceType: 'module'
6 | },
7 | env: {
8 | browser: true
9 | },
10 | extends: [
11 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
12 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
13 | 'plugin:vue/essential',
14 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md
15 | 'standard'
16 | ],
17 | // required to lint *.vue files
18 | plugins: [
19 | 'vue'
20 | ],
21 | globals: {
22 | 'ga': true, // Google Analytics
23 | 'cordova': true,
24 | '__statics': true
25 | },
26 | // add your custom rules here
27 | 'rules': {
28 | // allow async-await
29 | 'generator-star-spacing': 'off',
30 |
31 | // allow paren-less arrow functions
32 | 'arrow-parens': 0,
33 | 'one-var': 0,
34 |
35 | 'import/first': 0,
36 | 'import/named': 2,
37 | 'import/namespace': 2,
38 | 'import/default': 2,
39 | 'import/export': 2,
40 | 'import/extensions': 0,
41 | 'import/no-unresolved': 0,
42 | 'import/no-extraneous-dependencies': 0,
43 |
44 | // allow debugger during development
45 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .quasar
2 | .DS_Store
3 | .thumbs.db
4 | node_modules
5 | /dist
6 | /src-cordova/platforms
7 | /src-cordova/plugins
8 | /src-cordova/www
9 | npm-debug.log*
10 | yarn-debug.log*
11 | yarn-error.log*
12 |
13 | # Editor directories and files
14 | .idea
15 | .vscode
16 | *.suo
17 | *.ntvs*
18 | *.njsproj
19 | *.sln
20 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | plugins: [
5 | // to edit target browsers: use "browserslist" field in package.json
6 | require('autoprefixer')
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/.stylintrc:
--------------------------------------------------------------------------------
1 | {
2 | "blocks": "never",
3 | "brackets": "never",
4 | "colons": "never",
5 | "colors": "always",
6 | "commaSpace": "always",
7 | "commentSpace": "always",
8 | "cssLiteral": "never",
9 | "depthLimit": false,
10 | "duplicates": true,
11 | "efficient": "always",
12 | "extendPref": false,
13 | "globalDupe": true,
14 | "indentPref": 2,
15 | "leadingZero": "never",
16 | "maxErrors": false,
17 | "maxWarnings": false,
18 | "mixed": false,
19 | "namingConvention": false,
20 | "namingConventionStrict": false,
21 | "none": "never",
22 | "noImportant": false,
23 | "parenSpace": "never",
24 | "placeholder": false,
25 | "prefixVarsWithDollar": "always",
26 | "quotePref": "single",
27 | "semicolons": "never",
28 | "sortOrder": false,
29 | "stackedProperties": "never",
30 | "trailingWhitespace": "never",
31 | "universal": "never",
32 | "valid": true,
33 | "zeroUnits": "never",
34 | "zIndexNormalize": false
35 | }
36 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Campus Cloud
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 | 
2 |
3 | # Quasar Framework JWT Starter Kit
4 | > Starter Kit for a Quasar Project with JWT Authentication.
5 |
6 | ## Usage
7 |
8 | First, make sure you have Node >= 8 and NPM >= 5.
9 |
10 | ``` bash
11 | # install Quasar CLI beta version:
12 | $ npm install -g quasar-cli
13 |
14 | # install Vue CLI if you don't have it already
15 | $ npm install -g vue-cli
16 |
17 | # clone Quasar-JWT Starter Kit
18 | $ git clone https://github.com/neatpro/Quasar-JWT.git
19 |
20 | $ cd Quasar-JWT
21 | $ npm install
22 |
23 | $ quasar dev
24 | ```
25 |
26 | > Backend using Laravel Framework https://github.com/neatpro/Laravel-JWT
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "quasar-jwt",
3 | "version": "1.0.0",
4 | "description": "JWT authentication for Quasar Framework",
5 | "productName": "Quasar JWT",
6 | "cordovaId": "org.cordova.quasar.app",
7 | "author": "Sasa Skoko",
8 | "private": true,
9 | "scripts": {
10 | "lint": "eslint --ext .js,.vue src",
11 | "test": "echo \"No test specified\" && exit 0"
12 | },
13 | "dependencies": {
14 | "@websanova/vue-auth": "2.21.14-beta",
15 | "axios": "^0.18.0",
16 | "vue-axios": "^2.0.2",
17 | "vuex-router-sync": "^5.0.0"
18 | },
19 | "devDependencies": {
20 | "babel-eslint": "10.0.1",
21 | "eslint": "5.6.1",
22 | "eslint-config-standard": "12.0.0",
23 | "eslint-friendly-formatter": "4.0.1",
24 | "eslint-loader": "2.1.1",
25 | "eslint-plugin-import": "2.14.0",
26 | "eslint-plugin-node": "7.0.1",
27 | "eslint-plugin-promise": "4.0.1",
28 | "eslint-plugin-standard": "4.0.0",
29 | "eslint-plugin-vue": "4.7.1",
30 | "quasar-cli": "^0.17.20",
31 | "strip-ansi": "^3.0.1"
32 | },
33 | "engines": {
34 | "node": ">= 8.9.0",
35 | "npm": ">= 5.6.0"
36 | },
37 | "browserslist": [
38 | "> 1%",
39 | "last 2 versions",
40 | "not ie <= 10"
41 | ]
42 | }
43 |
--------------------------------------------------------------------------------
/quasar.conf.js:
--------------------------------------------------------------------------------
1 | // Configuration for your app
2 |
3 | module.exports = function (ctx) {
4 | return {
5 | // app plugins (/src/plugins)
6 | plugins: [
7 | 'axios'
8 | ],
9 | css: [
10 | 'app.styl'
11 | ],
12 | extras: [
13 | ctx.theme.mat ? 'roboto-font' : null,
14 | 'material-icons'
15 | // 'ionicons',
16 | // 'mdi',
17 | // 'fontawesome'
18 | ],
19 | supportIE: false,
20 | vendor: {
21 | add: [],
22 | remove: []
23 | },
24 | build: {
25 | scopeHoisting: true,
26 | vueRouterMode: 'history',
27 | // gzip: true,
28 | // analyze: true,
29 | // extractCSS: false,
30 | // useNotifier: false,
31 | extendWebpack (cfg) {
32 | cfg.module.rules.push({
33 | enforce: 'pre',
34 | test: /\.(js|vue)$/,
35 | loader: 'eslint-loader',
36 | exclude: /(node_modules|quasar)/
37 | })
38 | }
39 | },
40 | devServer: {
41 | https: true,
42 | proxy: {
43 | "/backend/api": {
44 | target: "http://127.0.0.1:8000",
45 | pathRewrite: {"^/backend/api" : "api"}
46 | }
47 | }
48 | // https: true,
49 | // port: 8080,
50 | // open: true // opens browser window automatically
51 | },
52 | // framework: 'all' --- includes everything; for dev only!
53 | framework: {
54 | components: [
55 | 'QLayout',
56 | 'QLayoutHeader',
57 | 'QLayoutDrawer',
58 | 'QPageContainer',
59 | 'QPage',
60 | 'QToolbar',
61 | 'QToolbarTitle',
62 | 'QTabs',
63 | 'QTab',
64 | 'QRouteTab',
65 | 'QBtn',
66 | 'QIcon',
67 | 'QList',
68 | 'QListHeader',
69 | 'QItem',
70 | 'QItemMain',
71 | 'QItemSide',
72 | 'QAjaxBar',
73 | 'QCard',
74 | 'QCardSeparator',
75 | 'QCardActions',
76 | 'QInput',
77 | 'QPopover',
78 | 'QSelect',
79 | 'QOptionGroup'
80 | ],
81 | directives: [
82 | 'Ripple',
83 | 'CloseOverlay'
84 | ],
85 | // Quasar plugins
86 | plugins: [
87 | 'Notify'
88 | ]
89 | },
90 | // animations: 'all' --- includes all animations
91 | animations: [
92 | ],
93 | pwa: {
94 | cacheExt: 'js,html,css,ttf,eot,otf,woff,woff2,json,svg,gif,jpg,jpeg,png,wav,ogg,webm,flac,aac,mp4,mp3',
95 | manifest: {
96 | // name: 'Quasar App',
97 | // short_name: 'Quasar-PWA',
98 | // description: 'Best PWA App in town!',
99 | display: 'standalone',
100 | orientation: 'portrait',
101 | background_color: '#ffffff',
102 | theme_color: '#027be3',
103 | icons: [
104 | {
105 | 'src': 'statics/icons/icon-128x128.png',
106 | 'sizes': '128x128',
107 | 'type': 'image/png'
108 | },
109 | {
110 | 'src': 'statics/icons/icon-192x192.png',
111 | 'sizes': '192x192',
112 | 'type': 'image/png'
113 | },
114 | {
115 | 'src': 'statics/icons/icon-256x256.png',
116 | 'sizes': '256x256',
117 | 'type': 'image/png'
118 | },
119 | {
120 | 'src': 'statics/icons/icon-384x384.png',
121 | 'sizes': '384x384',
122 | 'type': 'image/png'
123 | },
124 | {
125 | 'src': 'statics/icons/icon-512x512.png',
126 | 'sizes': '512x512',
127 | 'type': 'image/png'
128 | }
129 | ]
130 | }
131 | },
132 | cordova: {
133 | // id: 'org.cordova.quasar.app'
134 | },
135 | electron: {
136 | extendWebpack (cfg) {
137 | // do something with cfg
138 | },
139 | packager: {
140 | // OS X / Mac App Store
141 | // appBundleId: '',
142 | // appCategoryType: '',
143 | // osxSign: '',
144 | // protocol: 'myapp://path',
145 |
146 | // Window only
147 | // win32metadata: { ... }
148 | }
149 | },
150 |
151 | // leave this here for Quasar CLI
152 | starterKit: '1.0.0'
153 | }
154 | }
155 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
Sorry, nothing here...(404)
10 |