Skip to content

Commit ffcf414

Browse files
authored
[feat]: reset password/team member setting (#73)
* [feat]: reset user password Signed-off-by: kevin <[email protected]> * [feat]: team member setting Signed-off-by: kevin <[email protected]> --------- Signed-off-by: kevin <[email protected]>
1 parent 042a3ce commit ffcf414

40 files changed

+1811
-102
lines changed

accesscontrol/policy.go

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,10 @@ const (
2626
)
2727

2828
const (
29-
Org ResourceType = "org"
30-
User ResourceType = "user"
31-
Team ResourceType = "team"
32-
Nav ResourceType = "nav"
33-
Datasource ResourceType = "datasource"
34-
DatasourceDataQuery ResourceType = "datasource_data_query"
35-
Dashboard ResourceType = "dashboard"
36-
Chart ResourceType = "chart"
29+
LinAccessResource ResourceType = "LinAccessResource"
30+
AdminAccessResource ResourceType = "AdminAccessResource"
31+
EditorAccessResource ResourceType = "EditorAccessResource"
32+
ViewerAccessResource ResourceType = "ViewerAccessResource"
3733
)
3834

3935
func (r ResourceType) String() string {
@@ -73,20 +69,13 @@ func (pb *PolicyBuilder) Build() []Policy {
7369

7470
func BuildPolicyDefinitions() []Policy {
7571
return NewPlicyBuilder().
76-
AddPolicy(RoleLin, Org, Write).
77-
AddPolicy(RoleLin, Org, Read).
78-
AddPolicy(RoleAdmin, Team, Write).
79-
AddPolicy(RoleAdmin, Team, Read).
80-
AddPolicy(RoleAdmin, Nav, Write).
81-
AddPolicy(RoleAdmin, Nav, Read).
82-
AddPolicy(RoleAdmin, User, Write).
83-
AddPolicy(RoleAdmin, User, Read).
84-
AddPolicy(RoleAdmin, Datasource, Write).
85-
AddPolicy(RoleViewer, Datasource, Read).
86-
AddPolicy(RoleViewer, DatasourceDataQuery, Read).
87-
AddPolicy(RoleViewer, Dashboard, Write).
88-
AddPolicy(RoleViewer, Dashboard, Read).
89-
AddPolicy(RoleViewer, Chart, Write).
90-
AddPolicy(RoleViewer, Chart, Read).
72+
AddPolicy(RoleLin, LinAccessResource, Write).
73+
AddPolicy(RoleLin, LinAccessResource, Read).
74+
AddPolicy(RoleAdmin, AdminAccessResource, Write).
75+
AddPolicy(RoleAdmin, AdminAccessResource, Read).
76+
AddPolicy(RoleEditor, EditorAccessResource, Write).
77+
AddPolicy(RoleEditor, EditorAccessResource, Read).
78+
AddPolicy(RoleViewer, ViewerAccessResource, Write).
79+
AddPolicy(RoleViewer, ViewerAccessResource, Read).
9180
Build()
9281
}

cmd/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func buildDeps(db dbpkg.DB, cfg *config.Server) *deps.API {
118118
Config: cfg,
119119
OrgSrv: orgSrv,
120120
UserSrv: userSrv,
121-
TeamSrv: service.NewTeamService(db),
121+
TeamSrv: service.NewTeamService(db, userSrv),
122122
NavSrv: service.NewNavService(db),
123123
AuthorizeSrv: authorizeSrv,
124124
AuthenticateSrv: service.NewAuthenticateService(userSrv, db),

cmd/migrator.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ func runMigration(_ *cobra.Command, _ []string) error {
7272
migrator.AddMigration(dbpkg.NewMigration(&model.Dashboard{}))
7373
migrator.AddMigration(dbpkg.NewMigration(&model.Chart{}))
7474
migrator.AddMigration(dbpkg.NewMigration(&model.Team{}))
75+
migrator.AddMigration(dbpkg.NewMigration(&model.TeamMember{}))
7576
org := dbpkg.NewMigration(&model.Org{})
7677
org.AddInitRecord(
7778
&model.Org{Name: "Admin Org", UID: uuid.GenerateShortUUID()},

http/api/org.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,14 @@ func (api *OrgAPI) GetOrgListForSignedUser(c *gin.Context) {
117117
}
118118
httppkg.OK(c, orgs)
119119
}
120+
121+
// GetUserListForSignedOrg returns the users for current signed org, filter(user name/name/email).
122+
func (api *OrgAPI) GetUserListForSignedOrg(c *gin.Context) {
123+
prefix := c.Query("prefix")
124+
users, err := api.deps.OrgSrv.GetUserListForSignedOrg(c.Request.Context(), prefix)
125+
if err != nil {
126+
httppkg.Error(c, err)
127+
return
128+
}
129+
httppkg.OK(c, users)
130+
}

http/api/org_test.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,3 +373,53 @@ func TestOrgAPI_GetOrgListForSignedUser(t *testing.T) {
373373
})
374374
}
375375
}
376+
377+
func TestOrgAPI_GetUserListForSignedOrg(t *testing.T) {
378+
ctrl := gomock.NewController(t)
379+
defer ctrl.Finish()
380+
381+
orgSrv := service.NewMockOrgService(ctrl)
382+
r := gin.New()
383+
api := NewOrgAPI(&deps.API{
384+
OrgSrv: orgSrv,
385+
})
386+
r.GET("/org/users", api.GetUserListForSignedOrg)
387+
388+
cases := []struct {
389+
name string
390+
prepare func()
391+
assert func(resp *httptest.ResponseRecorder)
392+
}{
393+
{
394+
name: "get users failure",
395+
prepare: func() {
396+
orgSrv.EXPECT().GetUserListForSignedOrg(gomock.Any(), gomock.Any()).Return(nil, fmt.Errorf("err"))
397+
},
398+
assert: func(resp *httptest.ResponseRecorder) {
399+
assert.Equal(t, http.StatusInternalServerError, resp.Code)
400+
},
401+
},
402+
{
403+
name: "get users successfully",
404+
prepare: func() {
405+
orgSrv.EXPECT().GetUserListForSignedOrg(gomock.Any(), gomock.Any()).Return(nil, nil)
406+
},
407+
assert: func(resp *httptest.ResponseRecorder) {
408+
assert.Equal(t, http.StatusOK, resp.Code)
409+
},
410+
},
411+
}
412+
for _, tt := range cases {
413+
tt := tt
414+
t.Run(tt.name, func(_ *testing.T) {
415+
req, _ := http.NewRequestWithContext(context.TODO(), http.MethodGet, "/org/users", http.NoBody)
416+
req.Header.Set("content-type", "application/json")
417+
resp := httptest.NewRecorder()
418+
if tt.prepare != nil {
419+
tt.prepare()
420+
}
421+
r.ServeHTTP(resp, req)
422+
tt.assert(resp)
423+
})
424+
}
425+
}

http/api/team.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"github.com/lindb/linsight/constant"
2626
depspkg "github.com/lindb/linsight/http/deps"
2727
"github.com/lindb/linsight/model"
28+
"github.com/lindb/linsight/pkg/http"
2829
)
2930

3031
// TeamAPI represents team related api handlers.
@@ -109,3 +110,69 @@ func (api *TeamAPI) GetTeamByUID(c *gin.Context) {
109110
}
110111
httppkg.OK(c, team)
111112
}
113+
114+
// GetTeamMembers returns member list for team.
115+
func (api *TeamAPI) GetTeamMembers(c *gin.Context) {
116+
req := &model.SearchTeamMemberRequest{}
117+
if err := c.ShouldBindWith(req, http.QueryJSONBind); err != nil {
118+
httppkg.Error(c, err)
119+
return
120+
}
121+
members, total, err := api.deps.TeamSrv.GetTeamMembers(c.Request.Context(), c.Param(constant.UID), req)
122+
if err != nil {
123+
httppkg.Error(c, err)
124+
return
125+
}
126+
httppkg.OK(c, gin.H{
127+
"total": total,
128+
"members": members,
129+
})
130+
}
131+
132+
// AddTeamMembers adds new members to team.
133+
func (api *TeamAPI) AddTeamMembers(c *gin.Context) {
134+
var members model.AddTeamMember
135+
if err := c.ShouldBind(&members); err != nil {
136+
httppkg.Error(c, err)
137+
return
138+
}
139+
ctx := c.Request.Context()
140+
err := api.deps.TeamSrv.AddTeamMembers(ctx, c.Param(constant.UID), &members)
141+
if err != nil {
142+
httppkg.Error(c, err)
143+
return
144+
}
145+
httppkg.OK(c, "Members added")
146+
}
147+
148+
// UpdateTeamMember updates team member.
149+
func (api *TeamAPI) UpdateTeamMember(c *gin.Context) {
150+
var member model.UpdateTeamMember
151+
if err := c.ShouldBind(&member); err != nil {
152+
httppkg.Error(c, err)
153+
return
154+
}
155+
ctx := c.Request.Context()
156+
err := api.deps.TeamSrv.UpdateTeamMember(ctx, c.Param(constant.UID), &member)
157+
if err != nil {
158+
httppkg.Error(c, err)
159+
return
160+
}
161+
httppkg.OK(c, "Member updated")
162+
}
163+
164+
// RemoveTeamMember removes member from team.
165+
func (api *TeamAPI) RemoveTeamMember(c *gin.Context) {
166+
var members model.RemoveTeamMember
167+
if err := c.ShouldBind(&members); err != nil {
168+
httppkg.Error(c, err)
169+
return
170+
}
171+
ctx := c.Request.Context()
172+
err := api.deps.TeamSrv.RemoveTeamMember(ctx, c.Param(constant.UID), &members)
173+
if err != nil {
174+
httppkg.Error(c, err)
175+
return
176+
}
177+
httppkg.OK(c, "Members removed")
178+
}

0 commit comments

Comments
 (0)