From 9c76d9ba0031ee4175db6960024d61c23cc98659 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Wed, 29 Aug 2018 14:07:27 -0400 Subject: Add GetLDAPUserAttributes method to the plugin API (#9326) --- plugin/api.go | 6 ++++++ plugin/client_rpc_generated.go | 30 ++++++++++++++++++++++++++++++ plugin/plugintest/api.go | 25 +++++++++++++++++++++++++ 3 files changed, 61 insertions(+) (limited to 'plugin') 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) -- cgit v1.2.3-1-g7c22