initial commit
This commit is contained in:
parent
fe9c0e7188
commit
189f92c54b
54 changed files with 9238 additions and 0 deletions
112
server/configuration.go
Normal file
112
server/configuration.go
Normal file
|
@ -0,0 +1,112 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/mattermost/mattermost-server/model"
|
||||
)
|
||||
|
||||
// OnConfigurationChange is invoked when configuration changes may have been made.
|
||||
//
|
||||
// This sample implementation ensures the configured sample user and channel are created for use
|
||||
// by the plugin.
|
||||
func (p *Plugin) OnConfigurationChange() error {
|
||||
// Leverage the default implementation on the embedded plugin.Mattermost. This
|
||||
// automatically attempts to unmarshal the plugin config block of the server's
|
||||
// configuration onto the public members of Plugin, such as Username and ChannelName.
|
||||
//
|
||||
// Feel free to skip this and implement your own handler if you have more complex needs.
|
||||
if err := p.MattermostPlugin.OnConfigurationChange(); err != nil {
|
||||
p.API.LogError(err.Error())
|
||||
return err
|
||||
}
|
||||
|
||||
if err := p.ensureSampleUser(); err != nil {
|
||||
p.API.LogError(err.Error())
|
||||
return err
|
||||
}
|
||||
|
||||
if err := p.ensureSampleChannels(); err != nil {
|
||||
p.API.LogError(err.Error())
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Plugin) ensureSampleUser() *model.AppError {
|
||||
var err *model.AppError
|
||||
|
||||
// Check for the configured user. Ignore any error, since it's hard to distinguish runtime
|
||||
// errors from a user simply not existing.
|
||||
user, _ := p.API.GetUserByUsername(p.Username)
|
||||
|
||||
// Ensure the configured user exists.
|
||||
if user == nil {
|
||||
user, err = p.API.CreateUser(&model.User{
|
||||
Username: p.Username,
|
||||
Password: "sample",
|
||||
// AuthData *string `json:"auth_data,omitempty"`
|
||||
// AuthService string `json:"auth_service"`
|
||||
Email: fmt.Sprintf("%s@example.com", p.Username),
|
||||
Nickname: "Sam",
|
||||
FirstName: "Sample",
|
||||
LastName: "Plugin User",
|
||||
Position: "Bot",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
teams, err := p.API.GetTeams()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, team := range teams {
|
||||
// Ignore any error.
|
||||
p.API.CreateTeamMember(team.Id, p.sampleUserId)
|
||||
}
|
||||
|
||||
// Save the id for later use.
|
||||
p.sampleUserId = user.Id
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Plugin) ensureSampleChannels() *model.AppError {
|
||||
teams, err := p.API.GetTeams()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
p.sampleChannelIds = make(map[string]string)
|
||||
for _, team := range teams {
|
||||
// Check for the configured channel. Ignore any error, since it's hard to
|
||||
// distinguish runtime errors from a channel simply not existing.
|
||||
channel, _ := p.API.GetChannelByNameForTeamName(team.Name, p.ChannelName)
|
||||
|
||||
// Ensure the configured channel exists.
|
||||
if channel == nil {
|
||||
channel, err = p.API.CreateChannel(&model.Channel{
|
||||
TeamId: team.Id,
|
||||
Type: model.CHANNEL_OPEN,
|
||||
DisplayName: "Sample Plugin",
|
||||
Name: p.ChannelName,
|
||||
Header: "The channel used by the sample plugin.",
|
||||
Purpose: "This channel was created by a plugin for testing.",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// Save the ids for later use.
|
||||
p.sampleChannelIds[team.Id] = channel.Id
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Reference in a new issue