summaryrefslogtreecommitdiffstats
path: root/store
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2015-10-08 09:59:08 -0400
committerChristopher Speller <crspeller@gmail.com>2015-10-08 09:59:08 -0400
commita6629f95fe958d2a308e62b5f662f9eca7aea0b2 (patch)
treea87a1d9f26df52a4e9254cabe078f76c609c6d92 /store
parent7571d21f3200738199981c21b9466e0028d4fcbb (diff)
parentfea45ad0c570c32bd124abbf7256fae6e2a8bdf6 (diff)
downloadchat-a6629f95fe958d2a308e62b5f662f9eca7aea0b2.tar.gz
chat-a6629f95fe958d2a308e62b5f662f9eca7aea0b2.tar.bz2
chat-a6629f95fe958d2a308e62b5f662f9eca7aea0b2.zip
Merge pull request #944 from mattermost/PLT-518
PLT-518 check for security bulletins
Diffstat (limited to 'store')
-rw-r--r--store/sql_user_store.go31
-rw-r--r--store/sql_user_store_test.go23
-rw-r--r--store/store.go1
3 files changed, 55 insertions, 0 deletions
diff --git a/store/sql_user_store.go b/store/sql_user_store.go
index 0a723d965..f82f87290 100644
--- a/store/sql_user_store.go
+++ b/store/sql_user_store.go
@@ -370,6 +370,37 @@ func (us SqlUserStore) GetProfiles(teamId string) StoreChannel {
return storeChannel
}
+func (us SqlUserStore) GetSystemAdminProfiles() StoreChannel {
+
+ storeChannel := make(StoreChannel)
+
+ go func() {
+ result := StoreResult{}
+
+ var users []*model.User
+
+ if _, err := us.GetReplica().Select(&users, "SELECT * FROM Users WHERE Roles = :Roles", map[string]interface{}{"Roles": "system_admin"}); err != nil {
+ result.Err = model.NewAppError("SqlUserStore.GetSystemAdminProfiles", "We encounted an error while finding user profiles", err.Error())
+ } else {
+
+ userMap := make(map[string]*model.User)
+
+ for _, u := range users {
+ u.Password = ""
+ u.AuthData = ""
+ userMap[u.Id] = u
+ }
+
+ result.Data = userMap
+ }
+
+ storeChannel <- result
+ close(storeChannel)
+ }()
+
+ return storeChannel
+}
+
func (us SqlUserStore) GetByEmail(teamId string, email string) StoreChannel {
storeChannel := make(StoreChannel)
diff --git a/store/sql_user_store_test.go b/store/sql_user_store_test.go
index e2a454023..bfdd14fef 100644
--- a/store/sql_user_store_test.go
+++ b/store/sql_user_store_test.go
@@ -259,6 +259,29 @@ func TestUserStoreGetProfiles(t *testing.T) {
}
}
+func TestUserStoreGetSystemAdminProfiles(t *testing.T) {
+ Setup()
+
+ u1 := model.User{}
+ u1.TeamId = model.NewId()
+ u1.Email = model.NewId()
+ Must(store.User().Save(&u1))
+
+ u2 := model.User{}
+ u2.TeamId = u1.TeamId
+ u2.Email = model.NewId()
+ Must(store.User().Save(&u2))
+
+ if r1 := <-store.User().GetSystemAdminProfiles(); r1.Err != nil {
+ t.Fatal(r1.Err)
+ } else {
+ users := r1.Data.(map[string]*model.User)
+ if len(users) <= 0 {
+ t.Fatal("invalid returned system admin users")
+ }
+ }
+}
+
func TestUserStoreGetByEmail(t *testing.T) {
Setup()
diff --git a/store/store.go b/store/store.go
index 887913bc6..fc088ce74 100644
--- a/store/store.go
+++ b/store/store.go
@@ -104,6 +104,7 @@ type UserStore interface {
UpdateFailedPasswordAttempts(userId string, attempts int) StoreChannel
GetForExport(teamId string) StoreChannel
GetTotalUsersCount() StoreChannel
+ GetSystemAdminProfiles() StoreChannel
}
type SessionStore interface {