M core/routes.go => core/routes.go +28 -10
@@ 2684,6 2684,7 @@ func (s *Service) Integrations(c echo.Context) error {
pd.Data["mm_instruction"] = lt.Translate("As system admin run this command in the channel you want to connect")
pd.Data["disconnect"] = lt.Translate("Disconnect")
pd.Data["connect"] = lt.Translate("Connect")
+ pd.Data["connected"] = lt.Translate("Connected")
pd.Data["back"] = lt.Translate("Back")
var isRestricted bool
if links.BillingEnabled(gctx.Server.Config) && org.IsRestricted([]int{models.BillingStatusFree}) {
@@ 2692,24 2693,40 @@ func (s *Service) Integrations(c echo.Context) error {
baseURL := links.GetLinksDomainURL(c)
baseURL.Path = c.Echo().Reverse("mattermost:manifest", slug)
- opts = &database.FilterOptions{
- Filter: sq.Eq{"o.owner_id": user.ID},
- Limit: 1,
- }
var mmConn *models.MattermostConnection
- mmConns, err := models.GetMattermostConnections(c.Request().Context(), opts)
- if err != nil {
- return err
- }
- if len(mmConns) > 0 {
- mmConn = mmConns[0]
+ if org.MattermostConnID.Valid {
+ opts = &database.FilterOptions{
+ Filter: sq.Eq{"mc.id": org.MattermostConnID.Int64},
+ Limit: 1,
+ }
+ mmConns, err := models.GetMattermostConnections(c.Request().Context(), opts)
+ if err != nil {
+ return err
+ }
+ if len(mmConns) > 0 {
+ mmConn = mmConns[0]
+ }
}
+ var slConn *models.SlackConnection
slackURL, err := slack.GetSlackURL(c, org.Slug)
if err != nil {
return err
}
+ if org.SlackConnID.Valid {
+ opts = &database.FilterOptions{
+ Filter: sq.Eq{"sc.id": org.SlackConnID.Int64},
+ Limit: 1,
+ }
+ slConns, err := models.GetSlackConnections(c.Request().Context(), opts)
+ if err != nil {
+ return err
+ }
+ if len(slConns) > 0 {
+ slConn = slConns[0]
+ }
+ }
gmap := gobwebs.Map{
"org": org,
@@ 2717,6 2734,7 @@ func (s *Service) Integrations(c echo.Context) error {
"isRestricted": isRestricted,
"mmURL": baseURL.String(),
"slackURL": slackURL,
+ "slConn": slConn,
"mmConn": mmConn,
}
return links.Render(c, http.StatusOK, "org_integration.html", gmap)
M slack/routes.go => slack/routes.go +2 -1
@@ 308,7 308,8 @@ func (s *Service) ConnectSlack(c echo.Context) error {
}
org := orgs[0]
- if links.BillingEnabled(gctx.Server.Config) && org.IsRestricted([]int{models.BillingStatusFree, models.BillingStatusFree}) {
+ if links.BillingEnabled(gctx.Server.Config) &&
+ org.IsRestricted([]int{models.BillingStatusFree}) {
lt := localizer.GetSessionLocalizer(c)
messages.Error(c, lt.Translate("Sorry, free accounts do not support Slack Integration. Please upgrade to continue"))
return c.Redirect(http.StatusMovedPermanently, c.Echo().Reverse("billing:create_subscription", org.Slug))
M templates/org_integration.html => templates/org_integration.html +5 -1
@@ 13,7 13,11 @@
<tbody>
<tr>
<td><strong>Slack</strong></td>
- <td><a href="{{.slackURL}}" class="button error" target="_blank">{{$.pd.Data.connect}}</a></td>
+ {{ if .slConn }}
+ <td><a href="{{reverse "slack:slack_disconnect" .slConn.ID}}" class="button error">{{$.pd.Data.disconnect}}</a></td>
+ {{ else }}
+ <td><a href="{{.slackURL}}" class="button error" target="_blank">{{$.pd.Data.connect}}</a></td>
+ {{ end }}
</tr>
<tr>
<td><strong>Mattermost</strong></td>