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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
| import axios from 'axios'
| import jsSHA from 'jssha'
|
| class W4kApi {
| /**
| * @description 鉴权挑战
| * @param {Object} param 查询及提交参数
| */
| login (ip, username = 'admin', password) {
| return new Promise((resolve, reject) => {
| let challurl = ip + '/api/auth/login/challenge?username=' + username
| challurl = '/trans/redirect?rd=' + challurl + '&method=get'
|
| let loginurl = ip + '/api/auth/login'
| loginurl = '/trans/redirect?rd=' + loginurl + '&method=post'
|
| axios({
| url: challurl,
| method: 'post' // get
| }).then(res => {
| if (res.errors) {
| reject(res)
| } else {
| const shaObj = new jsSHA('SHA-256', 'TEXT', { encoding: 'UTF8' })
| shaObj.update(password + res.salt + res.challenge)
| const hash = shaObj.getHash('HEX')
|
| axios({
| url: loginurl,
| method: 'post',
| data: {
| session_id: res.session_id,
| username: username,
| password: hash
| }
| }).then(result => {
| resolve(result)
| }, (err) => {
| reject(err)
| })
| }
| }, (err) => {
| reject(err)
| })
| })
| }
|
| queryUsers (ip) {
| let url = ip + '/api/persons/query'
| url = '/trans/redirect?rd=' + url + '&method=post'
|
| return axios({
| url: url,
| method: 'POST',
| withCredentials: true,
| headers: { 'Content-Type': 'application/json' },
| data: {
| limit: 100,
| offset: 0,
| sort: 'desc',
| query_id: '',
| query_string: ''
| }
| })
| }
|
| addUsers (ip, data) {
| return new Promise((resolve, reject) => {
| let delurl = ip + '/api/persons/item/' + data.id
| delurl = '/trans/redirect?rd=' + delurl + '&method=DELETE'
|
| let addurl = ip + '/api/persons/item'
| addurl = '/trans/redirect?rd=' + addurl + '&method=post'
|
| if (data.deleted) {
| delete data.deleted
| axios({
| url: delurl,
| method: 'post' // DELETE
| }).then(res => {
| if (res.errors) {
| reject(res)
| } else {
| axios({
| url: addurl,
| method: 'post',
| data: data
| }).then(result => {
| resolve(result)
| }, (err) => {
| reject(err)
| })
| }
| }, (err) => {
| reject(err)
| })
| } else {
| delete data.deleted
| axios({
| url: addurl,
| method: 'post',
| data: data
| }).then(result => {
| resolve(result)
| }, (err) => {
| reject(err)
| })
| }
| })
| }
| }
|
| export default new W4kApi()
|
|