diff --git a/pkg/api/credential.go b/pkg/api/credential.go index 94b22b7..bfe4a1d 100644 --- a/pkg/api/credential.go +++ b/pkg/api/credential.go @@ -58,7 +58,17 @@ func CredentialPagingEndpoint(c echo.Context) error { pageSize, _ := strconv.Atoi(c.QueryParam("pageSize")) name := c.QueryParam("name") - items, total, _ := model.FindPageCredential(pageIndex, pageSize, name) + var ( + total int64 + items []model.CredentialVo + ) + + account, _ := GetCurrentAccount(c) + if account.Role == model.RoleUser { + items, total, _ = model.FindPageCredential(pageIndex, pageSize, name, account.ID) + } else { + items, total, _ = model.FindPageCredential(pageIndex, pageSize, name, "") + } return Success(c, H{ "total": total, diff --git a/pkg/model/credential.go b/pkg/model/credential.go index 8f4580e..e2b893c 100644 --- a/pkg/model/credential.go +++ b/pkg/model/credential.go @@ -27,20 +27,34 @@ func (r *Credential) TableName() string { return "credentials" } +type CredentialVo struct { + ID string `json:"id"` + Name string `json:"name"` + Type string `json:"type"` + Username string `json:"username"` + Created utils.JsonTime `json:"created"` + Creator string `json:"creator"` + CreatorName string `json:"creatorName"` +} + func FindAllCredential() (o []Credential, err error) { err = global.DB.Find(&o).Error return } -func FindPageCredential(pageIndex, pageSize int, name string) (o []Credential, total int64, err error) { +func FindPageCredential(pageIndex, pageSize int, name, creator string) (o []CredentialVo, total int64, err error) { db := global.DB + db = db.Table("credentials").Select("credentials.id,credentials.name,credentials.type,credentials.username,credentials.creator,credentials.created,users.nickname as creator_name").Joins("left join users on credentials.creator = users.id") if len(name) > 0 { - db = db.Where("name like ?", "%"+name+"%") + db = db.Where("credentials.name like ?", "%"+name+"%") + } + if len(creator) > 0 { + db = db.Where("credentials.creator = ?", creator) } - err = db.Order("created desc").Find(&o).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Count(&total).Error + err = db.Order("credentials.created desc").Find(&o).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Count(&total).Error if o == nil { - o = make([]Credential, 0) + o = make([]CredentialVo, 0) } return } diff --git a/pkg/model/user.go b/pkg/model/user.go index 3be3acc..69c55df 100644 --- a/pkg/model/user.go +++ b/pkg/model/user.go @@ -6,6 +6,11 @@ import ( "reflect" ) +const ( + RoleUser = "user" + RoleAdmin = "admin" +) + type User struct { ID string `gorm:"primary_key" json:"id"` Username string `json:"username"` @@ -60,6 +65,11 @@ func FindUserById(id string) (o User, err error) { return } +func FindUserByIdIn(ids []string) (o []User, err error) { + err = global.DB.Where("id in ?", ids).First(&o).Error + return +} + func FindUserByUsername(username string) (o User, err error) { err = global.DB.Where("username = ?", username).First(&o).Error return diff --git a/web/src/components/asset/Asset.js b/web/src/components/asset/Asset.js index 511d315..1ee3bb9 100644 --- a/web/src/components/asset/Asset.js +++ b/web/src/components/asset/Asset.js @@ -5,8 +5,10 @@ import { Button, Col, Divider, + Dropdown, Input, Layout, + Menu, Modal, PageHeader, Row, @@ -25,11 +27,8 @@ import {isEmpty, itemRender} from "../../utils/utils"; import { - CodeTwoTone, - CopyTwoTone, DeleteOutlined, - DeleteTwoTone, - EditTwoTone, + DownOutlined, ExclamationCircleOutlined, PlusOutlined, SyncOutlined, @@ -409,16 +408,37 @@ class Asset extends Component { title: '操作', key: 'action', render: (text, record) => { + + const menu = ( + + + + + + + + + + + + + + + ); + return (
- - - - + + + +
) }, diff --git a/web/src/components/credential/Credential.js b/web/src/components/credential/Credential.js index 2633bde..d193c02 100644 --- a/web/src/components/credential/Credential.js +++ b/web/src/components/credential/Credential.js @@ -1,20 +1,25 @@ import React, {Component} from 'react'; -import {Button, Col, Divider, Input, Layout, Modal, PageHeader, Row, Space, Table, Tooltip, Typography} from "antd"; +import { + Button, + Col, + Divider, + Input, + Layout, + Modal, + PageHeader, + Row, + Space, + Table, + Tag, + Tooltip, + Typography +} from "antd"; import qs from "qs"; import CredentialModal from "./CredentialModal"; import request from "../../common/request"; import {message} from "antd/es"; -import { - DeleteOutlined, - DeleteTwoTone, - EditTwoTone, - ExclamationCircleOutlined, - EyeTwoTone, - PlusOutlined, - SyncOutlined, - UndoOutlined -} from '@ant-design/icons'; +import {DeleteOutlined, ExclamationCircleOutlined, PlusOutlined, SyncOutlined, UndoOutlined} from '@ant-design/icons'; import {itemRender} from "../../utils/utils"; import Logout from "../user/Logout"; @@ -251,11 +256,11 @@ class Credential extends Component { if (type === 'private-key') { return ( - 密钥 + 密钥 ); } else { return ( - 密码 + 密码 ); } @@ -264,6 +269,14 @@ class Credential extends Component { title: '授权账户', dataIndex: 'username', key: 'username', + }, { + title: '创建人', + dataIndex: 'creatorName', + key: 'creatorName', + }, { + title: '创建时间', + dataIndex: 'created', + key: 'created', }, { title: '操作', @@ -272,11 +285,9 @@ class Credential extends Component { return (
- - -
) diff --git a/web/src/components/user/User.js b/web/src/components/user/User.js index b2c839f..7629d0d 100644 --- a/web/src/components/user/User.js +++ b/web/src/components/user/User.js @@ -5,7 +5,8 @@ import { Badge, Button, Col, - Divider, Dropdown, + Divider, + Dropdown, Input, Layout, Menu, @@ -14,6 +15,7 @@ import { Row, Space, Table, + Tag, Tooltip, Typography, } from "antd"; @@ -22,9 +24,11 @@ import UserModal from "./UserModal"; import request from "../../common/request"; import {message} from "antd/es"; import { - DeleteOutlined, DownOutlined, - ExclamationCircleOutlined, IssuesCloseOutlined, - PlusOutlined, SmileOutlined, + DeleteOutlined, + DownOutlined, + ExclamationCircleOutlined, + IssuesCloseOutlined, + PlusOutlined, StopOutlined, SyncOutlined, UndoOutlined @@ -261,6 +265,25 @@ class User extends Component { title: '用户昵称', dataIndex: 'nickname', key: 'nickname', + }, { + title: '用户角色', + dataIndex: 'role', + key: 'role', + render: (role, record) => { + + if (role === 'normal') { + return ( + 普通用户 + ); + } else if (role === 'admin') { + return ( + 管理用户 + ); + } else { + return role; + } + + } }, { title: '在线状态', dataIndex: 'online', @@ -282,33 +305,13 @@ class User extends Component { key: 'action', render: (text, record) => { - const menu = ( - - - - - - - - - - - - - ); return (
- - - +
) }, @@ -391,51 +394,52 @@ class User extends Component { - - - + {/* */} + {/**/} - - - + {/* */} + {/**/}