Browse Source

完成!

Shellmiao 3 years ago
parent
commit
d6f4fa16f7

+ 5 - 5
src/components/Forms/LogoutForm.js

@@ -3,7 +3,7 @@ import {Button, Form, message} from "antd";
 import {apiLogout} from "../../services/API/API";
 import getCookie from "../../utils/getCookie";
 import deleteCookie from "../../utils/deleteCookie";
-import {CheckCircleTwoTone} from "@ant-design/icons";
+import {CheckCircleTwoTone, EnterOutlined, LoginOutlined, LogoutOutlined} from "@ant-design/icons";
 import './UserForm.less'
 import {Link} from "react-router-dom";
 
@@ -28,15 +28,15 @@ class LogoutForm extends Component {
         return (
             <div className={'logged-div'}>
                 <CheckCircleTwoTone className={'logged-logo'} twoToneColor="#52c41a"/>
-                <Button className={'enter-button'} size="large" type="primary">
-                    <Link to={'/cloud/file'}>
-                        Enter STCloud
+                <Button className={'enter-button'} size="large" type="primary" icon={<LoginOutlined />}>
+                    <Link to={'/cloud/file'} style={{color:'white'}}>
+                        &nbsp;&nbsp;&nbsp;Enter
                     </Link>
                 </Button>
                 <Form onFinish={this.handleSubmitLogout} className="login-form" initialValues={{remember: true}}>
                     <Form.Item style={{marginBottom: '10px'}}>
                         <Button size="large" type="primary" htmlType="submit" className="login-form-button"
-                                style={{width: '100%'}}>
+                                style={{width: '100%'}} icon={<LogoutOutlined/>}>
                             Logout
                         </Button>
                     </Form.Item>

+ 4 - 3
src/components/Page/DiskPage.js

@@ -9,6 +9,7 @@ import AddFolderModal from "./AddFolderModal";
 import UploadFileModal from "./UploadFileModal";
 import GroupModal from "./GroupModal";
 import {CopyTwoTone} from "@ant-design/icons";
+import encrypt from "../../utils/encrypt/encrypt";
 
 class DiskPage extends Component {
 
@@ -104,7 +105,7 @@ class DiskPage extends Component {
                 })
             } else if (res.data.code === 401) {
                 message.error('未登录')
-                window.location.href = "";
+                // window.location.href = "";
             } else {
                 message.error('错误')
                 // window.location.href = "";
@@ -151,9 +152,9 @@ class DiskPage extends Component {
                     </Breadcrumb.Item>
                     {this.renderBread(this.state.addressList)}
                     {
-                        this.state.type === 'team' ? <div className={'group-modal'}>
+                        <div className={'group-modal'}>
                             <GroupModal group_id={this.props.group_id} getGroupList={this.props.getGroupList}/>
-                        </div> : null
+                        </div>
                     }
                 </div>
                 <div className="site-layout-background" style={{marginTop: 10, padding: 24, minHeight: '82vh'}}>

+ 13 - 11
src/components/Page/GroupModal.js

@@ -166,17 +166,19 @@ class GroupModal extends Component {
                                     </Form.Item>
                                 </Form>
                             </TabPane>
-                            <TabPane tab="Quit" key="3" style={{padding: "20px 30px 0"}}>
-                                <Form onFinish={this.handleQuitGroup}
-                                      initialValues={{remember: true}}>
-                                    <Form.Item style={{marginBottom: '10px'}}>
-                                        <Button size="large" type="primary" htmlType="submit"
-                                                style={{width: '100%',}}>
-                                            Quit Group
-                                        </Button>
-                                    </Form.Item>
-                                </Form>
-                            </TabPane>
+                            {
+                                this.props.group_id ? <TabPane tab="Quit" key="3" style={{padding: "20px 30px 0"}}>
+                                    <Form onFinish={this.handleQuitGroup}
+                                          initialValues={{remember: true}}>
+                                        <Form.Item style={{marginBottom: '10px'}}>
+                                            <Button size="large" type="primary" htmlType="submit"
+                                                    style={{width: '100%',}}>
+                                                Quit Group
+                                            </Button>
+                                        </Form.Item>
+                                    </Form>
+                                </TabPane> : null
+                            }
                         </Tabs>
                     </div>
                 </Modal>

+ 5 - 1
src/components/Page/TeamPage.js

@@ -49,7 +49,11 @@ class TeamPage extends Component {
                         tabPosition='right'
                         centered={true}
                     >
-
+                        <TabPane tab={'User'} key={'User'}>
+                            <div className={'TeamPage'}>
+                                <DiskPage type={'user'}/>
+                            </div>
+                        </TabPane>
                         {GroupList.map((ele, index) => (
                             <TabPane tab={ele.group_name} key={ele.group_id}>
                                 <div className={'TeamPage'}>

+ 36 - 18
src/services/API/API.js

@@ -1,10 +1,12 @@
-import fetch from "../../utils/Axios/Axios";
 import Qs from 'qs'
 import instance from "../../utils/Axios/UploadFile";
+import EncryptObj from "../../utils/encrypt/encrypt";
+import fetch from "../../utils/Axios/Axios";
 
 // example 获取数据json模拟
 export function apiRegister(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/account/register/',
         method: 'post',
         data: Qs.stringify(params),
@@ -13,7 +15,8 @@ export function apiRegister(params) {
 
 // 登录校验
 export function apiLogin(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/account/login/',
         method: 'post',
         data: Qs.stringify(params),
@@ -21,14 +24,16 @@ export function apiLogin(params) {
 }
 
 export function apiIsLogged() {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/profile/islogged/',
         method: 'get',
     })
 }
 
 export function apiLogout(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/account/logout/',
         method: 'post',
         data: Qs.stringify(params),
@@ -36,7 +41,8 @@ export function apiLogout(params) {
 }
 
 export function apiRootFolderId(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/folder/get_root_folder/',
         method: 'post',
         data: Qs.stringify(params),
@@ -44,7 +50,8 @@ export function apiRootFolderId(params) {
 }
 
 export function apiFolderList(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/folder/folder_list/',
         method: 'post',
         data: Qs.stringify(params),
@@ -52,7 +59,8 @@ export function apiFolderList(params) {
 }
 
 export function apiAddFolder(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/folder/add_folder/',
         method: 'post',
         data: Qs.stringify(params),
@@ -69,7 +77,8 @@ export function apiUploadFile(params) {
 }
 
 export function apiGetGroup(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/group/group_list/',
         method: 'post',
         data: Qs.stringify(params),
@@ -77,7 +86,8 @@ export function apiGetGroup(params) {
 }
 
 export function apiJoinGroup(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/group/join_group/',
         method: 'post',
         data: Qs.stringify(params),
@@ -85,7 +95,8 @@ export function apiJoinGroup(params) {
 }
 
 export function apiCreateGroup(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/group/create_group/',
         method: 'post',
         data: Qs.stringify(params),
@@ -93,7 +104,8 @@ export function apiCreateGroup(params) {
 }
 
 export function apiGroupRoot(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/group/get_group_root_folder/',
         method: 'post',
         data: Qs.stringify(params),
@@ -101,7 +113,8 @@ export function apiGroupRoot(params) {
 }
 
 export function apiConfirm(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/account/check_token/',
         method: 'post',
         data: Qs.stringify(params),
@@ -109,7 +122,8 @@ export function apiConfirm(params) {
 }
 
 export function apiCheck(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/account/send_email_verification_code/',
         method: 'post',
         data: Qs.stringify(params),
@@ -117,7 +131,8 @@ export function apiCheck(params) {
 }
 
 export function apiReset(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/account/reset_password/',
         method: 'post',
         data: Qs.stringify(params),
@@ -133,7 +148,8 @@ export function apiDownload(params) {
 }
 
 export function apiDelete(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/file/delete_file/',
         method: 'post',
         data: Qs.stringify(params),
@@ -141,7 +157,8 @@ export function apiDelete(params) {
 }
 
 export function apiDeleteFolder(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/folder/delete_folder/',
         method: 'post',
         data: Qs.stringify(params),
@@ -149,7 +166,8 @@ export function apiDeleteFolder(params) {
 }
 
 export function apiQuitGroup(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/group/quit_group/',
         method: 'post',
         data: Qs.stringify(params),

+ 4 - 4
src/utils/encrypt/aes.js

@@ -1,24 +1,24 @@
 import CryptoJS from 'crypto-js'
 
 var iv = CryptoJS.enc.Utf8.parse("16-Bytes--String");   //加密向量
-function AESEnc(key, content) {
+export function AESEnc(key, content) {
     var key = CryptoJS.enc.Utf8.parse(key);   //加密密钥
     var srcs = CryptoJS.enc.Utf8.parse(content);
     var encrypted = CryptoJS.AES.encrypt(srcs, key, {iv: iv, mode: CryptoJS.mode.CBC});
     return encrypted.toString();
 }
 
-function AESDec(key, content) {
+export function AESDec(key, content) {
     var key = CryptoJS.enc.Utf8.parse(key);   //加密密钥
     var decrypted = CryptoJS.AES.decrypt(content, key, {iv: iv, mode: CryptoJS.mode.CBC});
     return decrypted.toString(CryptoJS.enc.Utf8);
 }
 
-function getKey() {
+export function getKey() {
     return uuid(16, 16);
 }
 
-function uuid(len, radix) {
+export function uuid(len, radix) {
     var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
     var uuid = [], i;
     radix = radix || chars.length;

+ 72 - 13
src/utils/encrypt/encrypt.js

@@ -1,15 +1,74 @@
-import 'rsa.js'
-import 'aes.js'
-
-function encrypt() {
-    let key = getKey();
-    let encryptKey = RSA(key);
-    console.log("encryptKey: " + encryptKey);
-    let cipherText = AESEnc(key, "context");
-    let plainText = AESDec(key, cipherText);
-    console.log("密文: " + cipherText);
-    console.log("明文: " + plainText);
-    return [cipherText, encryptKey]
+import './rsa'
+import './aes'
+import {AESDec, AESEnc, getKey} from "./aes";
+import {RSA} from "./rsa";
+import Qs from "qs";
+import axios from "axios";
+import qs from "qs";
+
+
+class EncryptObj {
+    key = ''
+
+    encryptKey = ''
+
+    cipherText = ''
+
+    fetch = axios.create({
+        baseURL: "http://30gz758467.51vip.biz:59173/", // 这里是本地express启动的服务地址
+        timeout: 5000 // request timeout
+    })
+
+    encrypt = content => {
+        this.key = getKey()
+        this.encryptKey = RSA(this.key)
+        this.cipherText = AESEnc(this.key, content)
+        this.fetch.interceptors.request.use(config => {
+            config.headers['X-Requested-With'] = 'XMLHttpRequest'
+            // let regex = /.*csrftoken=([^;.]*).*$/
+            // config.headers['X-CSRFToken'] = document.cookie.match(regex) === null ? null : document.cookie.match(regex)[1]
+            if (config.method === 'post' || config.method === 'put' || config.method === 'delete') {
+                if (typeof (config.data) !== 'string' && config.headers['Content-Type'] !== 'multipart/form-data') {
+                    config.data = qs.stringify(config.data)
+                }
+            }
+            return config
+        }, error => {
+            Promise.reject(error)
+        })
+
+        this.fetch.interceptors.response.use(async data => {
+            console.log(data.data.enc_content)
+            console.log(this.key)
+            console.log("明文: " + AESDec(this.key, data.data.enc_content))
+            return JSON.parse(AESDec(this.key, data.data.enc_content))
+        }, error => {
+            if (error.response) {
+                if (error.response.status === 500) {
+                    console.log('服务器错误,请联系管理员处理')
+                }
+                console.log('1服务器错误,请联系管理员处理')
+                return Promise.reject(error.response.data)
+            } else {
+                console.log('2服务器错误,请联系管理员处理')
+                return Promise.reject(error)
+            }
+        })
+    }
+
+    postData = param => {
+        this.encrypt(param.data)
+        let e_param = {
+            cipher_text: this.cipherText,
+            enc_key: this.encryptKey,
+        }
+        console.log(this.key + "233ok")
+        return this.fetch({
+            url: param.url,
+            method: param.method,
+            data: Qs.stringify(e_param),
+        })
+    }
 }
 
-export default encrypt;
+export default EncryptObj;

+ 2 - 2
src/utils/encrypt/rsa.js

@@ -1,9 +1,9 @@
-import JSEncrypt from 'jsencrypt'
+import {JSEncrypt} from 'jsencrypt'
 
 var publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCRQZ5O/AOAjeYAaSFf6Rjhqovws78I716I9oGF7WxCIPmcaUa1YuyLOncCCuPsaw69+RMWjdbOBp8hd4PPM/d4mKTOVEYUE0SfxhhDTZaM5CzQEUXUyXy7icQTGR5wBjrbjU1yHCKOf5PJJZZQWB06husSFZ40TdL7FdlBpZ1u1QIDAQAB";
 var encrypt = new JSEncrypt();
 encrypt.setPublicKey(publicKey);
 
-function RSA(content) {
+export function RSA(content) {
     return encrypt.encrypt(content);
 }