mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
WIP: user group additions
This commit is contained in:
@@ -45,6 +45,11 @@ type GetUserGroupByIdQuery struct {
|
|||||||
Result *UserGroup
|
Result *UserGroup
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GetUserGroupsByUserQuery struct {
|
||||||
|
UserId int64 `json:"userId"`
|
||||||
|
Result []*UserGroup `json:"userGroups"`
|
||||||
|
}
|
||||||
|
|
||||||
type SearchUserGroupsQuery struct {
|
type SearchUserGroupsQuery struct {
|
||||||
Query string
|
Query string
|
||||||
Name string
|
Name string
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ func init() {
|
|||||||
bus.AddHandler("sql", DeleteUserGroup)
|
bus.AddHandler("sql", DeleteUserGroup)
|
||||||
bus.AddHandler("sql", SearchUserGroups)
|
bus.AddHandler("sql", SearchUserGroups)
|
||||||
bus.AddHandler("sql", GetUserGroupById)
|
bus.AddHandler("sql", GetUserGroupById)
|
||||||
|
bus.AddHandler("sql", GetUserGroupsByUser)
|
||||||
|
|
||||||
bus.AddHandler("sql", AddUserGroupMember)
|
bus.AddHandler("sql", AddUserGroupMember)
|
||||||
bus.AddHandler("sql", RemoveUserGroupMember)
|
bus.AddHandler("sql", RemoveUserGroupMember)
|
||||||
@@ -162,6 +163,21 @@ func GetUserGroupById(query *m.GetUserGroupByIdQuery) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetUserGroupsByUser(query *m.GetUserGroupsByUserQuery) error {
|
||||||
|
query.Result = make([]*m.UserGroup, 0)
|
||||||
|
|
||||||
|
sess := x.Table("user_group")
|
||||||
|
sess.Join("INNER", "user_group_member", "user_group.id=user_group_member.user_group_id")
|
||||||
|
sess.Where("user_group_member.user_id=?", query.UserId)
|
||||||
|
|
||||||
|
err := sess.Find(&query.Result)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func AddUserGroupMember(cmd *m.AddUserGroupMemberCommand) error {
|
func AddUserGroupMember(cmd *m.AddUserGroupMemberCommand) error {
|
||||||
return inTransaction(func(sess *xorm.Session) error {
|
return inTransaction(func(sess *xorm.Session) error {
|
||||||
if res, err := sess.Query("SELECT 1 from user_group_member WHERE user_group_id=? and user_id=?", cmd.UserGroupId, cmd.UserId); err != nil {
|
if res, err := sess.Query("SELECT 1 from user_group_member WHERE user_group_id=? and user_id=?", cmd.UserGroupId, cmd.UserId); err != nil {
|
||||||
|
|||||||
@@ -67,6 +67,17 @@ func TestUserGroupCommandsAndQueries(t *testing.T) {
|
|||||||
So(len(query2.Result.UserGroups), ShouldEqual, 2)
|
So(len(query2.Result.UserGroups), ShouldEqual, 2)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Convey("Should be able to return all user groups a user is member of", func() {
|
||||||
|
groupId := group2.Result.Id
|
||||||
|
err := AddUserGroupMember(&m.AddUserGroupMemberCommand{OrgId: 1, UserGroupId: groupId, UserId: userIds[0]})
|
||||||
|
|
||||||
|
query := &m.GetUserGroupsByUserQuery{UserId: userIds[0]}
|
||||||
|
err = GetUserGroupsByUser(query)
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
So(len(query.Result), ShouldEqual, 1)
|
||||||
|
So(query.Result[0].Name, ShouldEqual, "group2 name")
|
||||||
|
})
|
||||||
|
|
||||||
Convey("Should be able to remove users from a group", func() {
|
Convey("Should be able to remove users from a group", func() {
|
||||||
err = RemoveUserGroupMember(&m.RemoveUserGroupMemberCommand{UserGroupId: group1.Result.Id, UserId: userIds[0]})
|
err = RemoveUserGroupMember(&m.RemoveUserGroupMemberCommand{UserGroupId: group1.Result.Id, UserId: userIds[0]})
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
|
|||||||
@@ -5,12 +5,10 @@
|
|||||||
<div class="page-header">
|
<div class="page-header">
|
||||||
<h1>User Groups</h1>
|
<h1>User Groups</h1>
|
||||||
|
|
||||||
<div class="page-header-tabs">
|
<a class="btn btn-success" ng-click="ctrl.openUserGroupModal()">
|
||||||
<button class="btn btn-success" ng-click="ctrl.openModal()">
|
<i class="fa fa-plus"></i>
|
||||||
<i class="fa fa-plus"></i>
|
Create User Group
|
||||||
Create User Group
|
</a>
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="search-field-wrapper pull-right width-18">
|
<div class="search-field-wrapper pull-right width-18">
|
||||||
<span style="position: relative;">
|
<span style="position: relative;">
|
||||||
|
|||||||
@@ -63,14 +63,14 @@ export default class UserGroupsCtrl {
|
|||||||
.then(this.get.bind(this));
|
.then(this.get.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
openModal() {
|
openUserGroupModal() {
|
||||||
var modalScope = this.$scope.$new();
|
var modalScope = this.$scope.$new();
|
||||||
modalScope.createUserGroup = this.createUserGroup.bind(this);
|
modalScope.createUserGroup = this.createUserGroup.bind(this);
|
||||||
|
|
||||||
this.$scope.appEvent('show-modal', {
|
this.$scope.appEvent('show-modal', {
|
||||||
src: 'public/app/features/org/partials/create_user_group.html',
|
src: 'public/app/features/org/partials/create_user_group.html',
|
||||||
modalClass: 'user-group-modal',
|
modalClass: 'user-group-modal',
|
||||||
scope: this.$scope
|
scope: modalScope
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user