Przeglądaj źródła

minor: 获取用户信息

tuonian 15 godzin temu
rodzic
commit
93552f15c3
5 zmienionych plików z 67 dodań i 19 usunięć
  1. 6 0
      build.cmd
  2. 1 1
      conf/privilege
  3. 14 13
      server/auth.go
  4. 1 0
      server/sso/syno.go
  5. 45 5
      ui/index.html

+ 6 - 0
build.cmd

@@ -0,0 +1,6 @@
+@echo on
+set GOARCH=amd64
+set GOOS=linux
+set CGO_ENABLED=0
+go build -o ./build/auth.cgi server/auth.go
+go build -o ./build/update.cgi server/update.go

+ 1 - 1
conf/privilege

@@ -2,6 +2,6 @@
 	"defaults":{
 		"run-as": "package"
 	},
-	"username": "MyApplication",
+	"username": "WebToolBox",
 	"join-groupname": "http"
 }

+ 14 - 13
server/auth.go

@@ -34,21 +34,22 @@ func main() {
 	}
 
 	synoResp := sso.SynoAuth()
-
+	synoResp.PrintNoData()
 	if !synoResp.Ok {
-		synoResp.PrintNoData()
-		os.Exit(0)
-	}
-
-	userData := synoResp.Data
-	resp := sso.LoginByAccount(userData.User)
-	if !resp.Ok {
-		r := sso.UnauthorisedResp()
-		r.PrintNoData()
 		os.Exit(0)
 	}
-	synoResp.PrintNoData()
-	data := resp.Data
-	jsonData, _ := json.Marshal(data)
+	jsonData, _ := json.Marshal(synoResp.Data)
 	fmt.Print(string(jsonData))
+	log.Printf("result:%s", jsonData)
+	//userData := synoResp.Data
+	//resp := sso.LoginByAccount(userData.User)
+	//if !resp.Ok {
+	//	r := sso.UnauthorisedResp()
+	//	r.PrintNoData()
+	//	os.Exit(0)
+	//}
+	//synoResp.PrintNoData()
+	//data := resp.Data
+	//jsonData, _ := json.Marshal(data)
+	//fmt.Print(string(jsonData))
 }

+ 1 - 0
server/sso/syno.go

@@ -138,6 +138,7 @@ func SynoAuth() SynoResp {
 	}
 	query := u.Query()
 	tokenStr := query.Get("SynoToken")
+	log.Println("tokenStr: ", tokenStr)
 
 	//os.Setenv("QUERY_STRING", "SynoToken="+to)
 	cmd := exec.Command("/usr/syno/synoman/webman/modules/authenticate.cgi")

+ 45 - 5
ui/index.html

@@ -7,11 +7,51 @@
 <body>
 不知道是不是这样,还是哪样
 
-<form action="/webman/3rdparty/WebToolBox/auth.cgi?action=portal" method="post" enctype="multipart/form-data">
-    <div class="btns">
-        <button>登录</button>
-    </div>
+<div class="btns">
+    <button onclick="getUserinfo()">获取用户信息</button>
+</div>
+<script type="text/javascript">
 
-</form>
+    function authorization(token){
+        fetch(`/webman/3rdparty/WebToolBox/auth.cgi?action=portal&SynoToken=${token}`, {
+            method: 'POST'
+        }).then(async resp=>{
+            const data = await resp.json()
+            console.log('resp',resp,data)
+        }).catch(e=>{
+            console.log('auth fail',e)
+        })
+    }
+
+    function getToken(){
+        return fetch(`/webapi/entry.cgi?api=SYNO.API.Auth&version=6&method=token`, {
+            method: 'GET',
+        }).then(async resp=>{
+            const data = await resp.json()
+            if (data.success){
+                var token = data.data.synotoken
+                localStorage.setItem('SynoToken',token)
+                authorization(token)
+                console.log('token',token)
+                return token
+            }
+            console.log('resp',resp,data)
+        }).catch(e=>{
+            console.log('auth fail',e)
+        })
+    }
+
+
+    getToken()
+
+    function getUserinfo(){
+        var token = localStorage.getItem('SynoToken')
+        if (token){
+            authorization(token)
+        }else {
+            getToken().then(t=>authorization(t))
+        }
+    }
+</script>
 </body>
 </html>