限制slack-slash命令访问

时间:2017-05-26 11:18:25

标签: jenkins slack-api slack

我已经自动完成了詹姆斯的部署,而不是slash commands

我需要给permission for slash commands或限制斜杠命令只能访问特定用户(即)通道中的某些成员可以使用/deploy_dev部署开发环境,但是他们不能部署到分段和生产环境。

1 个答案:

答案 0 :(得分:8)

为了限制对自定义斜杠命令的访问,只需检查哪个用户在脚本中调用了斜杠命令,然后执行命令或拒绝它(并使用适当的消息回复)。

Slack始终为请求提供用户ID和用户名,以便您的脚本中提供信息。请参阅以下示例,了解来自Slack的命令请求:(来自official documentation

/**
    {
        "created_on": "26 may 2017",
        "todos": [
            "go get github.com/go-sql-driver/mysql"     
        ],
        "aim": "Reading fname column into []string(slice of strings)"
    }
*/


/* 
mysql> select * from users;
+----+-----------+----------+----------+-------------------------------+--------------+
| id | fname     | lname    | uname    | email                         | contact      |
+----+-----------+----------+----------+-------------------------------+--------------+
|  1 | Rishikesh | Agrawani | hygull   | rishikesh0014051992@gmail.com | 917353787704 |
|  2 | Sandeep   | E        | sandeep  | sandeepeswar8@gmail.com       | 919739040038 |
|  3 | Darshan   | Sidar    | darshan  | sidardarshan@gmail.com        | 917996917565 |
|  4 | Surendra  | Prajapat | surendra | surendrakgadwal@gmail.com     | 918385894407 |
|  5 | Mukesh    | Jakhar   | mukesh   | mjakhar.kjahhar@gmail.com     | 919772254140 |
+----+-----------+----------+----------+-------------------------------+--------------+
5 rows in set (0.00 sec)

mysql> 
*/

package main
import "fmt"
import "log"
import (
    _"github.com/go-sql-driver/mysql"   
    "database/sql"
)

func main() {
    // db, err := sql.Open("mysql", "<username>:<password>@tcp(127.0.0.1:<port>)/<dbname>?charset=utf8" )
    db, err := sql.Open("mysql", "hygull:admin@67@tcp(127.0.0.1:3306)/practice_db?charset=utf8")

    if err != nil {
        log.Fatal(err)
    }

    rows, err := db.Query("select fname from users")

    if err != nil {
        log.Fatal(err)
    }

    firstnames:=[]string{}
    for rows.Next() {
        var fname string
        rows.Scan(&fname)
        firstnames = append(firstnames, fname)
    }

    fmt.Println(firstnames)
    db.Close()
}

/* 
[Rishikesh Sandeep Darshan Surendra Mukesh]
*/

要管理谁有权访问,我建议使用私有渠道,以便用户必须成为特定私有渠道的成员才能执行特定的斜杠命令。您可以致电groups.info以获取脚本中私人频道所有成员的用户ID。

请注意,斜杠命令始终可供所有用户访问,并且Slack中没有全局配置选项,这将允许您授予对特定斜杠命令的访问权限。因此,您必须在脚本中执行此操作,如上所述。