From c74c332e6a708d06a9a7157d2e178ae5027b1094 Mon Sep 17 00:00:00 2001 From: veypi Date: Thu, 28 Oct 2021 17:22:10 +0800 Subject: [PATCH] change vue2 to vue3 --- go.mod | 3 +- go.sum | 8 +- libs/token/user.go | 65 +- models/app.go | 19 +- models/message.go | 11 + oaf/.browserslistrc | 3 - oaf/.editorconfig | 5 - oaf/.eslintignore | 1 - oaf/.eslintrc.js | 22 - oaf/.gitignore | 26 +- oaf/.vscode/extensions.json | 3 + oaf/README.md | 25 +- oaf/babel.config.js | 5 - oaf/index.html | 13 + oaf/package.json | 58 +- oaf/public/icon.js | 1 + oaf/public/index.html | 20 - oaf/src/App.vue | 119 +- oaf/src/api/ajax.ts | 113 +- oaf/src/api/index.ts | 254 +- oaf/src/assets/logo.svg | 1 - oaf/src/components/HelloWorld.vue | 52 + oaf/src/components/WxLogin.vue | 59 +- oaf/src/components/demo.vue | 20 - oaf/src/components/one-icon/icon.vue | 28 - oaf/src/components/one-icon/index.ts | 26 - oaf/src/env.d.ts | 8 + oaf/src/index.css | 6 + oaf/src/main.ts | 31 +- oaf/src/plugins/vuetify.ts | 24 - oaf/src/router/index.ts | 113 +- oaf/src/shims-tsx.d.ts | 13 - oaf/src/shims-vue.d.ts | 5 - oaf/src/shims-vuetify.d.ts | 4 - oaf/src/store/index.ts | 82 +- oaf/src/types/vue-prototype.d.ts | 14 - oaf/src/view/404.vue | 32 + oaf/src/view/demo.vue | 10 + oaf/src/view/file.vue | 10 + oaf/src/view/home.vue | 24 + oaf/src/view/login.vue | 61 + oaf/src/view/register.vue | 10 + oaf/src/view/wx.vue | 51 + oaf/src/views/404.vue | 24 - oaf/src/views/Home.vue | 43 - oaf/src/views/demo.vue | 21 - oaf/src/views/login.vue | 123 - oaf/src/views/register.vue | 124 - oaf/src/views/wx.vue | 66 - oaf/tsconfig.json | 37 +- oaf/vite.config.ts | 19 + oaf/vue.config.js | 28 - oaf/yarn.lock | 10146 ++++--------------------- 53 files changed, 2253 insertions(+), 9836 deletions(-) create mode 100644 models/message.go delete mode 100644 oaf/.browserslistrc delete mode 100644 oaf/.editorconfig delete mode 100644 oaf/.eslintignore delete mode 100644 oaf/.eslintrc.js create mode 100644 oaf/.vscode/extensions.json delete mode 100644 oaf/babel.config.js create mode 100644 oaf/index.html create mode 100644 oaf/public/icon.js delete mode 100644 oaf/public/index.html delete mode 100644 oaf/src/assets/logo.svg create mode 100644 oaf/src/components/HelloWorld.vue delete mode 100644 oaf/src/components/demo.vue delete mode 100644 oaf/src/components/one-icon/icon.vue delete mode 100644 oaf/src/components/one-icon/index.ts create mode 100644 oaf/src/env.d.ts create mode 100644 oaf/src/index.css delete mode 100644 oaf/src/plugins/vuetify.ts delete mode 100644 oaf/src/shims-tsx.d.ts delete mode 100644 oaf/src/shims-vue.d.ts delete mode 100644 oaf/src/shims-vuetify.d.ts delete mode 100644 oaf/src/types/vue-prototype.d.ts create mode 100644 oaf/src/view/404.vue create mode 100644 oaf/src/view/demo.vue create mode 100644 oaf/src/view/file.vue create mode 100644 oaf/src/view/home.vue create mode 100644 oaf/src/view/login.vue create mode 100644 oaf/src/view/register.vue create mode 100644 oaf/src/view/wx.vue delete mode 100644 oaf/src/views/404.vue delete mode 100644 oaf/src/views/Home.vue delete mode 100644 oaf/src/views/demo.vue delete mode 100644 oaf/src/views/login.vue delete mode 100644 oaf/src/views/register.vue delete mode 100644 oaf/src/views/wx.vue create mode 100644 oaf/vite.config.ts delete mode 100644 oaf/vue.config.js diff --git a/go.mod b/go.mod index 685f4c2..c64fcc3 100644 --- a/go.mod +++ b/go.mod @@ -6,9 +6,10 @@ require ( github.com/json-iterator/go v1.1.10 github.com/urfave/cli/v2 v2.2.0 github.com/veypi/OneBD v0.4.1 - github.com/veypi/utils v0.2.2 + github.com/veypi/utils v0.3.1 gorm.io/driver/mysql v1.0.5 gorm.io/driver/sqlite v1.1.4 gorm.io/gorm v1.21.3 ) + replace github.com/veypi/OneBD v0.4.1 => ../OceanCurrent/OneBD diff --git a/go.sum b/go.sum index 3e1b2e1..df80854 100644 --- a/go.sum +++ b/go.sum @@ -43,11 +43,11 @@ github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/urfave/cli/v2 v2.2.0 h1:JTTnM6wKzdA0Jqodd966MVj4vWbbquZykeX1sKbe2C4= github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= -github.com/veypi/OneBD v0.4.1 h1:IkuV2tqay3fyX+FsM9XrKiKS9N7pymUJnrscGx2T0mc= -github.com/veypi/OneBD v0.4.1/go.mod h1:9IoMOBzwIGyv6IZGF7ZnTYwTcHltLKicDgcwha66G0U= -github.com/veypi/utils v0.1.5/go.mod h1:oKcwTDfvE1qtuhJuCcDcfvGquv9bHdFaCGA42onVMC4= -github.com/veypi/utils v0.2.2 h1:BRxu0mYJJpuubPjmIIrRVr0XEq9NMp//KUCrVTkFums= github.com/veypi/utils v0.2.2/go.mod h1:rAkC6Fbk5cBa3u+8pyCpsVcnXw74EhEQJGmPND9FvRg= +github.com/veypi/utils v0.3.0 h1:vCi0jqMsAMBPblFCmneUw3Wet5y1XHZLA5ZP9c/2owI= +github.com/veypi/utils v0.3.0/go.mod h1:rAkC6Fbk5cBa3u+8pyCpsVcnXw74EhEQJGmPND9FvRg= +github.com/veypi/utils v0.3.1 h1:QL4Q/+iXNFXNVENiUeEttSwNwkeqrorSpTBpCs7fXBI= +github.com/veypi/utils v0.3.1/go.mod h1:rAkC6Fbk5cBa3u+8pyCpsVcnXw74EhEQJGmPND9FvRg= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= diff --git a/libs/token/user.go b/libs/token/user.go index 8da80a8..790982c 100644 --- a/libs/token/user.go +++ b/libs/token/user.go @@ -3,18 +3,7 @@ package token import ( "OneAuth/libs/key" "OneAuth/models" - "crypto/hmac" - "crypto/sha256" - "encoding/base64" - "encoding/json" - "errors" - "strings" - "time" -) - -var ( - InvalidToken = errors.New("invalid token") - ExpiredToken = errors.New("expired token") + "github.com/veypi/utils/jwt" ) type simpleAuth struct { @@ -26,10 +15,9 @@ type simpleAuth struct { // TODO:: roles 是否会造成token过大 ? type PayLoad struct { + jwt.Payload ID uint `json:"id"` AppID uint `json:"app_id"` - Iat int64 `json:"iat"` //token time - Exp int64 `json:"exp"` Auth map[uint]*simpleAuth `json:"auth"` } @@ -62,17 +50,9 @@ func (p *PayLoad) GetAuth(ResourceID string, ResourceUUID ...string) models.Auth } func GetToken(u *models.User, appID uint) (string, error) { - header := map[string]string{ - "typ": "JWT", - "alg": "HS256", - } - //header := "{\"typ\": \"JWT\", \"alg\": \"HS256\"}" - now := time.Now().Unix() - payload := PayLoad{ + payload := &PayLoad{ ID: u.ID, AppID: appID, - Iat: now, - Exp: now + 60*60*24, Auth: map[uint]*simpleAuth{}, } for _, a := range u.GetAuths() { @@ -84,44 +64,9 @@ func GetToken(u *models.User, appID uint) (string, error) { } } } - a, err := json.Marshal(header) - if err != nil { - return "", err - } - b, err := json.Marshal(payload) - if err != nil { - return "", err - } - A := base64.StdEncoding.EncodeToString(a) - B := base64.StdEncoding.EncodeToString(b) - hmacCipher := hmac.New(sha256.New, []byte(key.User(payload.ID, payload.AppID))) - hmacCipher.Write([]byte(A + "." + B)) - C := hmacCipher.Sum(nil) - return A + "." + B + "." + base64.StdEncoding.EncodeToString(C), nil + return jwt.GetToken(payload, []byte(key.User(payload.ID, payload.AppID))) } func ParseToken(token string, payload *PayLoad) (bool, error) { - var A, B, C string - if seqs := strings.Split(token, "."); len(seqs) == 3 { - A, B, C = seqs[0], seqs[1], seqs[2] - } else { - return false, InvalidToken - } - tempPayload, err := base64.StdEncoding.DecodeString(B) - if err != nil { - return false, err - } - if err := json.Unmarshal(tempPayload, payload); err != nil { - return false, err - } - hmacCipher := hmac.New(sha256.New, []byte(key.User(payload.ID, payload.AppID))) - hmacCipher.Write([]byte(A + "." + B)) - tempC := hmacCipher.Sum(nil) - if !hmac.Equal([]byte(C), []byte(base64.StdEncoding.EncodeToString(tempC))) { - return false, nil - } - if time.Now().Unix() > payload.Exp { - return false, ExpiredToken - } - return true, nil + return jwt.ParseToken(token, payload, []byte(key.User(payload.ID, payload.AppID))) } diff --git a/models/app.go b/models/app.go index e7fa0cd..287c858 100644 --- a/models/app.go +++ b/models/app.go @@ -29,14 +29,17 @@ type App struct { UserRefreshUrl string `json:"user_refresh_url"` // app 校验用户token时使用 Key string `json:"-"` - // 是否允许用户自主注册 - EnableRegister bool `json:"enable_register"` - EnableUserKey bool `json:"enable_user_key"` - EnableUser bool `json:"enable_user"` - EnableWx bool `json:"enable_wx"` - EnablePhone bool `json:"enable_phone"` - EnableEmail bool `json:"enable_email"` - Wx *Wechat `json:"wx" gorm:"foreignkey:AppID;references:ID"` + // 是否允许用户自动加入应用 + EnableRegister bool `json:"enable_register"` + // + EnableUserKey bool `json:"enable_user_key"` + UserKeyUrl string `json:"user_key_url"` + // 允许登录方式 + EnableUser bool `json:"enable_user"` + EnableWx bool `json:"enable_wx"` + EnablePhone bool `json:"enable_phone"` + EnableEmail bool `json:"enable_email"` + Wx *Wechat `json:"wx" gorm:"foreignkey:AppID;references:ID"` } type AppUser struct { diff --git a/models/message.go b/models/message.go new file mode 100644 index 0000000..512274c --- /dev/null +++ b/models/message.go @@ -0,0 +1,11 @@ +package models + +type Message struct { + BaseModel + UserID uint `json:"user_id"` + User *User `json:"user"` + Title string `json:"title"` + Redirect string `json:"redirect"` + Content string `json:"content"` + From string `json:"from"` +} diff --git a/oaf/.browserslistrc b/oaf/.browserslistrc deleted file mode 100644 index 214388f..0000000 --- a/oaf/.browserslistrc +++ /dev/null @@ -1,3 +0,0 @@ -> 1% -last 2 versions -not dead diff --git a/oaf/.editorconfig b/oaf/.editorconfig deleted file mode 100644 index 7053c49..0000000 --- a/oaf/.editorconfig +++ /dev/null @@ -1,5 +0,0 @@ -[*.{js,jsx,ts,tsx,vue}] -indent_style = space -indent_size = 2 -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/oaf/.eslintignore b/oaf/.eslintignore deleted file mode 100644 index 539ad84..0000000 --- a/oaf/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -src/libs/wwLogin.js diff --git a/oaf/.eslintrc.js b/oaf/.eslintrc.js deleted file mode 100644 index 8244700..0000000 --- a/oaf/.eslintrc.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - root: true, - env: { - node: true - }, - extends: [ - 'plugin:vue/essential', - '@vue/standard', - '@vue/typescript/recommended' - ], - parserOptions: { - ecmaVersion: 2020 - }, - rules: { - 'object-curly-spacing': 0, - 'space-before-function-paren': 0, - '@typescript-eslint/camelcase': 0, - '@typescript-eslint/no-empty-function': 0, - 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', - 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' - } -} diff --git a/oaf/.gitignore b/oaf/.gitignore index 403adbc..d451ff1 100644 --- a/oaf/.gitignore +++ b/oaf/.gitignore @@ -1,23 +1,5 @@ -.DS_Store node_modules -/dist - - -# local env files -.env.local -.env.*.local - -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? +.DS_Store +dist +dist-ssr +*.local diff --git a/oaf/.vscode/extensions.json b/oaf/.vscode/extensions.json new file mode 100644 index 0000000..3dc5b08 --- /dev/null +++ b/oaf/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["johnsoncodehk.volar"] +} diff --git a/oaf/README.md b/oaf/README.md index c129842..f5342b7 100644 --- a/oaf/README.md +++ b/oaf/README.md @@ -1,24 +1,11 @@ -# oaf +# Vue 3 + Typescript + Vite -## Project setup -``` -yarn install -``` +This template should help get you started developing with Vue 3 and Typescript in Vite. The template uses Vue 3 ` + + diff --git a/oaf/package.json b/oaf/package.json index e89c50c..a72df91 100644 --- a/oaf/package.json +++ b/oaf/package.json @@ -1,49 +1,29 @@ { "name": "oaf", "version": "0.1.0", - "private": true, "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", - "lint": "vue-cli-service lint" + "dev": "vite", + "build": "vue-tsc --noEmit && vite build", + "serve": "vite preview" }, "dependencies": { - "@veypi/one-icon": "^1.0.1", - "axios": "^0.21.1", - "core-js": "^3.6.5", - "js-base64": "^3.6.0", - "vue": "^2.6.11", - "vue-class-component": "^7.2.3", - "vue-m-message": "^3.1.0", - "vue-property-decorator": "^9.1.2", - "vue-router": "^3.2.0", - "vuetify": "^2.4.0", - "vuex": "^3.4.0" + "@veypi/one-icon": "2", + "axios": "^0.24.0", + "js-base64": "^3.7.2", + "vue": "^3.2.16", + "vue-router": "^4.0.12", + "vuex": "^4.0.2" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^2.33.0", - "@typescript-eslint/parser": "^2.33.0", - "@vue/cli-plugin-babel": "~4.5.0", - "@vue/cli-plugin-eslint": "~4.5.0", - "@vue/cli-plugin-router": "~4.5.0", - "@vue/cli-plugin-typescript": "~4.5.0", - "@vue/cli-plugin-vuex": "~4.5.0", - "@vue/cli-service": "~4.5.0", - "@vue/eslint-config-standard": "^5.1.2", - "@vue/eslint-config-typescript": "^5.0.2", - "eslint": "^6.7.2", - "eslint-plugin-import": "^2.20.2", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-standard": "^4.0.0", - "eslint-plugin-vue": "^6.2.2", - "less": "^3.0.4", - "less-loader": "^5.0.0", - "sass": "^1.32.0", - "sass-loader": "^10.0.0", - "typescript": "~3.9.3", - "vue-cli-plugin-vuetify": "^2.2.2", - "vue-template-compiler": "^2.6.11", - "vuetify-loader": "^1.7.0" + "@tailwindcss/postcss7-compat": "^2.1.0", + "@vitejs/plugin-vue": "^1.9.3", + "autoprefixer": "^9.8.8", + "naive-ui": "^2.19.11", + "postcss": "^7.0.39", + "tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.2.17", + "typescript": "^4.4.3", + "vfonts": "^0.1.0", + "vite": "^2.6.4", + "vue-tsc": "^0.3.0" } } diff --git a/oaf/public/icon.js b/oaf/public/icon.js new file mode 100644 index 0000000..24a3819 --- /dev/null +++ b/oaf/public/icon.js @@ -0,0 +1 @@ +!function(c){var t,l,a,e,o,h='',i=(i=document.getElementsByTagName("script"))[i.length-1].getAttribute("data-injectcss"),d=function(c,t){t.parentNode.insertBefore(c,t)};if(i&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function n(){o||(o=!0,a())}function s(){try{e.documentElement.doScroll("left")}catch(c){return void setTimeout(s,50)}n()}t=function(){var c,t;(t=document.createElement("div")).innerHTML=h,h=null,(c=t.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",t=c,(c=document.body).firstChild?d(t,c.firstChild):c.appendChild(t))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),t()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(a=t,e=c.document,o=!1,s(),e.onreadystatechange=function(){"complete"==e.readyState&&(e.onreadystatechange=null,n())})}(window); \ No newline at end of file diff --git a/oaf/public/index.html b/oaf/public/index.html deleted file mode 100644 index fa6b9ab..0000000 --- a/oaf/public/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - <%= htmlWebpackPlugin.options.title %> - - - - - -
- - - diff --git a/oaf/src/App.vue b/oaf/src/App.vue index 2757044..8f2ad97 100644 --- a/oaf/src/App.vue +++ b/oaf/src/App.vue @@ -1,39 +1,88 @@ -