{"id":131954,"date":"2020-11-19T11:44:03","date_gmt":"2020-11-19T11:44:03","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cloudbridge-mattermost\/"},"modified":"2026-02-11T15:06:37","modified_gmt":"2026-02-11T15:06:37","slug":"cloudbridge-mattermost","status":"publish","type":"plugin","link":"https:\/\/gu.wordpress.org\/plugins\/cloudbridge-mattermost\/","author":1481119,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.2.3","stable_tag":"2.2.3","tested":"6.9.4","requires":"5.4.0","requires_php":"7.4","requires_plugins":null,"header_name":"Cloudbridge Mattermost","header_author":"WebbPlatsen, Joaquim Homrighausen <joho@webbplatsen.se>","header_description":"Provides integration between Mattermost and WordPress","assets_banners_color":"7e86b7","last_updated":"2026-02-11 15:06:37","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/code.webbplatsen.net\/wordpress\/cloudbridge-mattermost\/","header_plugin_uri":"https:\/\/code.webbplatsen.net\/wordpress\/cloudbridge-mattermost\/","header_author_uri":"https:\/\/webbplatsen.se\/","rating":5,"author_block_rating":0,"active_installs":60,"downloads":2393,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"joho68","date":"2021-01-21 14:19:30"},"1.1.0":{"tag":"1.1.0","author":"joho68","date":"2021-01-21 14:19:30"},"2.0.0":{"tag":"2.0.0","author":"joho68","date":"2021-01-21 14:57:50"},"2.1.0":{"tag":"2.1.0","author":"joho68","date":"2021-08-19 10:39:02"},"2.2.0":{"tag":"2.2.0","author":"joho68","date":"2023-11-08 09:33:53"},"2.2.1":{"tag":"2.2.1","author":"joho68","date":"2024-06-25 09:57:57"},"2.2.2":{"tag":"2.2.2","author":"joho68","date":"2025-12-08 11:21:17"},"2.2.3":{"tag":"2.2.3","author":"joho68","date":"2026-02-11 15:06:37"}},"upgrade_notice":{"2.2.1":"<ul>\n<li>Simply install\/upgrade to 2.2.1 and walk through the settings<\/li>\n<\/ul>","2.2.0":"<ul>\n<li>Simply install\/upgrade to 2.2.0 and walk through the settings<\/li>\n<\/ul>","2.0.0":"<ul>\n<li>Simply install\/upgrade 1.x to 2.0.0 and walk through the settings<\/li>\n<\/ul>","1.1.0":"<ul>\n<li>Simply install\/upgrade 1.0.0 to 1.1.0 and walk through the settings<\/li>\n<\/ul>","1.0.0":"<ul>\n<li>Initial release<\/li>\n<\/ul>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":"1"},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":2421459,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":2421459,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":2421459,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":2421459,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":2421459,"resolution":"772x250","location":"assets","locale":""},"banner.svg":{"filename":"banner.svg","revision":2421459,"resolution":false,"location":"assets","locale":false}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","2.0.0","2.1.0","2.2.0","2.2.1","2.2.2","2.2.3"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[618,597,184980,4906,600],"plugin_category":[54],"plugin_contributors":[190415,190417],"plugin_business_model":[],"class_list":["post-131954","plugin","type-plugin","status-publish","hentry","plugin_tags-cloud","plugin_tags-integration","plugin_tags-mattermost","plugin_tags-notifications","plugin_tags-security","plugin_category-security-and-spam-protection","plugin_contributors-joho68","plugin_contributors-webbplatsen","plugin_committers-joho68","plugin_support_reps-webbplatsen"],"banners":{"banner":"https:\/\/ps.w.org\/cloudbridge-mattermost\/assets\/banner-772x250.png?rev=2421459","banner_2x":"https:\/\/ps.w.org\/cloudbridge-mattermost\/assets\/banner-1544x500.png?rev=2421459","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/cloudbridge-mattermost\/assets\/icon.svg?rev=2421459","icon":"https:\/\/ps.w.org\/cloudbridge-mattermost\/assets\/icon.svg?rev=2421459","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This WordPress plugin provides integration with Mattermost.<\/p>\n\n<p>The plugin provides <strong>OAuth2 authentication<\/strong> functionality for logging into WordPress via Mattermost.<\/p>\n\n<p>The plugin provides <strong>OAuth2 authentication<\/strong> functionality for registering new WordPress users via Mattermost.<\/p>\n\n<p>The plugin additionally provides the following <strong>notification<\/strong> functionality, using an <strong>incoming webhook<\/strong> in Mattermost:<\/p>\n\n<ul>\n<li>Notifications for successful login<\/li>\n<li>Notifications for failed login<\/li>\n<li>Notifications for unknown user login attempt<\/li>\n<li>Notifications for password reset<\/li>\n<li>Notifications for plugin activation<\/li>\n<li>Notifications for plugin deactivation<\/li>\n<li>Notifications for plugin uninstallation<\/li>\n<li>Notifications for new\/edited user<\/li>\n<li>Notifications for deleted user<\/li>\n<\/ul>\n\n<p>The plugin can also make use of additional functionality such as posting to a specific channel\/user, overriding bot names, and additionally mention specific users.<\/p>\n\n<p>Other notes:<\/p>\n\n<ul>\n<li>This plugin <strong>may<\/strong> work with earlier versions of WordPress<\/li>\n<li>This plugin has been tested with <strong>WordPress 5.5.3 to 6.9.x<\/strong> at the time of this writing<\/li>\n<li>This plugin has been tested with <strong>Mattermost 5.x to 11.x<\/strong> at the time of this writing<\/li>\n<li>This plugin has been tested with <strong>PHP 7.4.x, 8.1.x, 8.2.x, and 8.3.x<\/strong> at the time of this writing<\/li>\n<li>This plugin optionally makes use of the <code>mb_<\/code> PHP functions<\/li>\n<li>This plugin may create entries in your PHP error log (if active)<\/li>\n<li>This plugin contains no Javascript<\/li>\n<li>This plugin contains no tracking code and does not process or store any information about users<\/li>\n<\/ul>\n\n<h3>Credits<\/h3>\n\n<p>Copyright 2020-2026 Joaquim Homrighausen; all rights reserved.<\/p>\n\n<p>The Cloudbridge Mattermost WordPress Plugin was written by Joaquim Homrighausen while converting caffeine into code.<\/p>\n\n<p>Cloudbridge Mattermost is sponsored by <a href=\"https:\/\/webbplatsen.se\">WebbPlatsen i Sverige AB<\/a>, Stockholm, Sweden.<\/p>\n\n<p>Commercial support and customizations for this plugin is available from WebbPlatsen i Sverige AB in Stockholm, Sweden.<\/p>\n\n<p>If you find this plugin useful, the author is happy to receive a donation, good review, or just a kind word.<\/p>\n\n<p>If there is something you feel to be missing from this plugin, or if you have found a problem with the code or a feature, please do not hesitate to reach out to support@webbplatsen.se.<\/p>\n\n<p>This plugin can also be downloaded from <a href=\"https:\/\/code.webbplatsen.net\/wordpress\/cloudbridge-mattermost\/\">code.webbplatsen.net<\/a> and <a href=\"https:\/\/github.com\/joho1968\/cloudbridge-mattermost\">GitHub<\/a><\/p>\n\n<!--section=installation-->\n<p>This section describes how to install the plugin and get it working.<\/p>\n\n<ol>\n<li>Upload the contents of the <code>cloudbridge-mattermost<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Configure the basic settings, such as the webhook URL<\/li>\n<li>To enable OAuth2 authentication, you'll need to configure your Mattermost instance to allow this: <a href=\"https:\/\/docs.mattermost.com\/developer\/oauth-2-0-applications.html\">OAuth 2.0 Applications<\/a><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20the%20plugin%20locale%20aware\"><h3>Is the plugin locale aware<\/h3><\/dt>\n<dd><p>Cloudbridge Mattermost uses standard WordPress functionality to handle localization\/locale. The native language localization of the plugin is English. It has been translated to Swedish by the author.<\/p>\n\n<p>For notifications sent to Mattermost, there is a setting since 1.1.0 that will allow you to override all such messages to be in en_US locale (English).<\/p><\/dd>\n<dt id=\"are%20there%20any%20incompatibilities\"><h3>Are there any incompatibilities<\/h3><\/dt>\n<dd><p>This is a hard question to answer. There are no known incompatibilities.<\/p><\/dd>\n<dt id=\"is%20there%20a%20way%20to%20customize%20the%20mattermost%20login%20button\"><h3>Is there a way to customize the Mattermost login button<\/h3><\/dt>\n<dd><p>The short answer is yes. The long answer follows:<\/p>\n\n<p>Add a filter hook in your functions.php or elsewhere like so:<\/p>\n\n<blockquote>\n  <p>add_filter('cbmm_login_filter', 'name_of_your_function', 10, 1);<\/p>\n<\/blockquote>\n\n<p>Your function will receive one argument, which is an associative array with three items: url, text, and full.<\/p>\n\n<p>The 'url' item contains the url to the OAuth2 handler for the plugin, you should not modify this. The 'text' item contains the prompt (\"Use Mattermost to login\"). The 'full' item contains the entire HTML output for the additional Mattermost login section on the WordPress login form.<\/p>\n\n<p>Your function should always return an associative array. If you want to update just the 'text' item, simply do so in the array passed to your function and then return the same array. If you want to completely replace the full HTML output, add an item named 'override' to the returned array.<\/p><\/dd>\n<dt id=\"what%20callback%20url%20do%20i%20have%20to%20setup%20on%20mattermost\"><h3>What callback URL do I have to setup on Mattermost<\/h3><\/dt>\n<dd><p>The URL should be:\n    https:\/\/\/wp-content\/plugins\/mattermost\/includes\/cbmm-oauth2.php<\/p>\n\n<p>If your <code>wp-content\/plugins<\/code> is not in a standard place, then you will need to replace that with the correct URL to it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.3<\/h4>\n\n<ul>\n<li>Verified with Mattermost version 8-11 and WordPress 6.9.x<\/li>\n<li>Notifications are no longer sent for non\u2011standard login errors when all \u201cUnsuccessful login\u201d roles are unchecked (#2, itsumonotakumi)<\/li>\n<li>Fix override handling for Mattermost login\/register button filter output<\/li>\n<li>Hardened OAuth2 post-login redirects to same-host only; external redirect_to values now fall back to admin\/home<\/li>\n<li>Updated Composer dependencies (guzzlehttp\/*, league\/oauth2-client, symfony\/deprecation-contracts) and removed paragonie\/random_compat<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Verified with Mattermost 8.x, 9.x, 10.x and WordPress 6.8.x<\/li>\n<li>Thanks to Nelson (castillo-n) for various fixes (PR#1)<\/li>\n<li>Added missing property <code>$cbmm_site_label<\/code> to class<\/li>\n<li>Removed use of <code>FILTER_SANITIZE_STRING<\/code> (deprecated in PHP 8.1)<\/li>\n<li>Removed use of uninitialized variables (exception handling)<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Refactor code to prevent warnings in PHP log while checking roles<\/li>\n<li>Verified with Mattermost 8.x, 9.x and WordPress 6.5.x<\/li>\n<li>Updated various dependencies<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Improved support for Mattermost accounts with 2FA\/MFA enabled<\/li>\n<li>Added possibility to register new users via Mattermost<\/li>\n<li>Added possibility to register new users only via Mattermost<\/li>\n<li>Verified with Mattermost 7.x and WordPress 6.x<\/li>\n<li>Updated various dependencies<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Verified with WordPress 5.8<\/li>\n<li>Support for Cloudflare<\/li>\n<li>Minor fixes<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Added <strong>OAuth2 support<\/strong>, you can now login to WordPress via Mattermost!<\/li>\n<li>Changed emoji for admin link to a more suitable one (:link:)<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Moved notifications to a separate tab<\/li>\n<li>Added notifications for password reset<\/li>\n<li>Added notification for plugin activation<\/li>\n<li>Added notification for plugin deactivation<\/li>\n<li>Added notification for plugin uninstallation<\/li>\n<li>Added notification for new\/edited user<\/li>\n<li>Added notification for deleted user<\/li>\n<li>Added general notice emoji (:bell:)<\/li>\n<li>Added setting to force notifications to be en_US locale (English)<\/li>\n<li>Login\/Login failure hooks are only hooked if webhook URL has been configured<\/li>\n<li>Corrected locale display\/handling of some strings<\/li>\n<li>Updated donate link<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Mattermost integration for WordPress. Tested with Mattermost 5.30.1+ and WordPress 5.5+.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/131954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=131954"}],"author":[{"embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/joho68"}],"wp:attachment":[{"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=131954"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=131954"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=131954"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=131954"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=131954"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=131954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}