diff --git a/pkg/api/user.go b/pkg/api/user.go index 91b6a9c3fc3..18c15249df3 100644 --- a/pkg/api/user.go +++ b/pkg/api/user.go @@ -290,8 +290,9 @@ func searchUser(c *models.ReqContext) (*models.SearchUsersQuery, error) { } searchQuery := c.Query("query") + filter := c.Query("filter") - query := &models.SearchUsersQuery{Query: searchQuery, Page: page, Limit: perPage} + query := &models.SearchUsersQuery{Query: searchQuery, Filter: models.SearchUsersFilter(filter), Page: page, Limit: perPage} if err := bus.Dispatch(query); err != nil { return nil, err } diff --git a/pkg/models/user.go b/pkg/models/user.go index 4ce72129c12..dcde05933d6 100644 --- a/pkg/models/user.go +++ b/pkg/models/user.go @@ -138,12 +138,17 @@ type GetUserProfileQuery struct { Result UserProfileDTO } +type SearchUsersFilter string + +const ActiveLast30Days SearchUsersFilter = "activeLast30Days" + type SearchUsersQuery struct { OrgId int64 Query string Page int Limit int AuthModule string + Filter SearchUsersFilter IsDisabled *bool diff --git a/pkg/services/sqlstore/user.go b/pkg/services/sqlstore/user.go index e7b4270dd5a..343b5504e7c 100644 --- a/pkg/services/sqlstore/user.go +++ b/pkg/services/sqlstore/user.go @@ -588,7 +588,6 @@ func SearchUsers(query *models.SearchUsersQuery) error { ORDER BY user_auth.created DESC ` joinCondition = "user_auth.id=" + joinCondition + dialect.Limit(1) + ")" sess.Join("LEFT", "user_auth", joinCondition) - if query.OrgId > 0 { whereConditions = append(whereConditions, "org_id = ?") whereParams = append(whereParams, query.OrgId) @@ -609,6 +608,12 @@ func SearchUsers(query *models.SearchUsersQuery) error { whereParams = append(whereParams, query.AuthModule) } + if query.Filter == models.ActiveLast30Days { + activeUserDeadlineDate := time.Now().Add(-activeUserTimeLimit) + whereConditions = append(whereConditions, `last_seen_at > ?`) + whereParams = append(whereParams, activeUserDeadlineDate) + } + if len(whereConditions) > 0 { sess.Where(strings.Join(whereConditions, " AND "), whereParams...) }