summaryrefslogtreecommitdiffstats
path: root/plugin
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2018-08-29 14:07:27 -0400
committerChristopher Speller <crspeller@gmail.com>2018-08-29 11:07:27 -0700
commit9c76d9ba0031ee4175db6960024d61c23cc98659 (patch)
tree798c48c4064fcafe2401516436967af208288b1d /plugin
parent0da5c852f05faf6c08026b9a16f8362564b27915 (diff)
downloadchat-9c76d9ba0031ee4175db6960024d61c23cc98659.tar.gz
chat-9c76d9ba0031ee4175db6960024d61c23cc98659.tar.bz2
chat-9c76d9ba0031ee4175db6960024d61c23cc98659.zip
Add GetLDAPUserAttributes method to the plugin API (#9326)
Diffstat (limited to 'plugin')
-rw-r--r--plugin/api.go6
-rw-r--r--plugin/client_rpc_generated.go30
-rw-r--r--plugin/plugintest/api.go25
3 files changed, 61 insertions, 0 deletions
diff --git a/plugin/api.go b/plugin/api.go
index 370c28268..2f8c6dcc5 100644
--- a/plugin/api.go
+++ b/plugin/api.go
@@ -62,6 +62,12 @@ type API interface {
// The status parameter can be: "online", "away", "dnd", or "offline".
UpdateUserStatus(userId, status string) (*model.Status, *model.AppError)
+ // GetLDAPUserAttributes will return LDAP attributes for a user.
+ // The attributes parameter should be a list of attributes to pull.
+ // Returns a map with attribute names as keys and the user's attributes as values.
+ // Requires an enterprise license, LDAP to be configured and for the user to use LDAP as an authentication method.
+ GetLDAPUserAttributes(userId string, attributes []string) (map[string]string, *model.AppError)
+
// CreateTeam creates a team.
CreateTeam(team *model.Team) (*model.Team, *model.AppError)
diff --git a/plugin/client_rpc_generated.go b/plugin/client_rpc_generated.go
index ab41c66d9..d0d576f8d 100644
--- a/plugin/client_rpc_generated.go
+++ b/plugin/client_rpc_generated.go
@@ -903,6 +903,36 @@ func (s *apiRPCServer) UpdateUserStatus(args *Z_UpdateUserStatusArgs, returns *Z
return nil
}
+type Z_GetLDAPUserAttributesArgs struct {
+ A string
+ B []string
+}
+
+type Z_GetLDAPUserAttributesReturns struct {
+ A map[string]string
+ B *model.AppError
+}
+
+func (g *apiRPCClient) GetLDAPUserAttributes(userId string, attributes []string) (map[string]string, *model.AppError) {
+ _args := &Z_GetLDAPUserAttributesArgs{userId, attributes}
+ _returns := &Z_GetLDAPUserAttributesReturns{}
+ if err := g.client.Call("Plugin.GetLDAPUserAttributes", _args, _returns); err != nil {
+ log.Printf("RPC call to GetLDAPUserAttributes API failed: %s", err.Error())
+ }
+ return _returns.A, _returns.B
+}
+
+func (s *apiRPCServer) GetLDAPUserAttributes(args *Z_GetLDAPUserAttributesArgs, returns *Z_GetLDAPUserAttributesReturns) error {
+ if hook, ok := s.impl.(interface {
+ GetLDAPUserAttributes(userId string, attributes []string) (map[string]string, *model.AppError)
+ }); ok {
+ returns.A, returns.B = hook.GetLDAPUserAttributes(args.A, args.B)
+ } else {
+ return fmt.Errorf("API GetLDAPUserAttributes called but not implemented.")
+ }
+ return nil
+}
+
type Z_CreateTeamArgs struct {
A *model.Team
}
diff --git a/plugin/plugintest/api.go b/plugin/plugintest/api.go
index e84ceffd8..32fab3595 100644
--- a/plugin/plugintest/api.go
+++ b/plugin/plugintest/api.go
@@ -524,6 +524,31 @@ func (_m *API) GetGroupChannel(userIds []string) (*model.Channel, *model.AppErro
return r0, r1
}
+// GetLDAPUserAttributes provides a mock function with given fields: userId, attributes
+func (_m *API) GetLDAPUserAttributes(userId string, attributes []string) (map[string]string, *model.AppError) {
+ ret := _m.Called(userId, attributes)
+
+ var r0 map[string]string
+ if rf, ok := ret.Get(0).(func(string, []string) map[string]string); ok {
+ r0 = rf(userId, attributes)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(map[string]string)
+ }
+ }
+
+ var r1 *model.AppError
+ if rf, ok := ret.Get(1).(func(string, []string) *model.AppError); ok {
+ r1 = rf(userId, attributes)
+ } else {
+ if ret.Get(1) != nil {
+ r1 = ret.Get(1).(*model.AppError)
+ }
+ }
+
+ return r0, r1
+}
+
// GetPost provides a mock function with given fields: postId
func (_m *API) GetPost(postId string) (*model.Post, *model.AppError) {
ret := _m.Called(postId)