mirror of
https://github.com/aljazceru/signal-cli-rest-api.git
synced 2025-12-19 23:54:22 +01:00
extended create groups endpoint
* added possibility to specify the description, the add group & edit group permissions and the group link state. see #148
This commit is contained in:
@@ -40,9 +40,17 @@ type GroupEntry struct {
|
|||||||
InviteLink string `json:"invite_link"`
|
InviteLink string `json:"invite_link"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GroupPermissions struct {
|
||||||
|
AddMembers string `json:"add_members" enums:"every-member,only-admins"`
|
||||||
|
EditGroup string `json:"edit_group" enums:"every-member,only-admins"`
|
||||||
|
}
|
||||||
|
|
||||||
type CreateGroupRequest struct {
|
type CreateGroupRequest struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Members []string `json:"members"`
|
Members []string `json:"members"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Permissions GroupPermissions `json:"permissions"`
|
||||||
|
GroupLinkState string `json:"group_link" enums:"enabled,enabled-with-approval,disabled"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type LoggingConfiguration struct {
|
type LoggingConfiguration struct {
|
||||||
@@ -667,9 +675,40 @@ func (a *Api) CreateGroup(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if req.Permissions.AddMembers != "" && !utils.StringInSlice(req.Permissions.AddMembers, []string{"every-member", "only-admins"}) {
|
||||||
|
c.JSON(400, gin.H{"error": "Invalid add members permission provided - only 'every-member' and 'only-admins' allowed!"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.Permissions.EditGroup != "" && !utils.StringInSlice(req.Permissions.EditGroup, []string{"every-member", "only-admins"}) {
|
||||||
|
c.JSON(400, gin.H{"error": "Invalid edit group permissions provided - only 'every-member' and 'only-admins' allowed!"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.GroupLinkState != "" && !utils.StringInSlice(req.GroupLinkState, []string{"enabled", "enabled-with-approval", "disabled"}) {
|
||||||
|
c.JSON(400, gin.H{"error": "Invalid group link provided - only 'enabled', 'enabled-with-approval' and 'disabled' allowed!" })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
cmd := []string{"--config", a.signalCliConfig, "-u", number, "updateGroup", "-n", req.Name, "-m"}
|
cmd := []string{"--config", a.signalCliConfig, "-u", number, "updateGroup", "-n", req.Name, "-m"}
|
||||||
cmd = append(cmd, req.Members...)
|
cmd = append(cmd, req.Members...)
|
||||||
|
|
||||||
|
if req.Permissions.AddMembers != "" {
|
||||||
|
cmd = append(cmd, []string{"--set-permission-add-member", req.Permissions.AddMembers}...)
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.Permissions.EditGroup != "" {
|
||||||
|
cmd = append(cmd, []string{"--set-permission-edit-details", req.Permissions.EditGroup}...)
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.GroupLinkState != "" {
|
||||||
|
cmd = append(cmd, []string{"--link", req.GroupLinkState}...)
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.Description != "" {
|
||||||
|
cmd = append(cmd, []string{"--description", req.Description}...)
|
||||||
|
}
|
||||||
|
|
||||||
out, err := runSignalCli(true, cmd, "")
|
out, err := runSignalCli(true, cmd, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if strings.Contains(err.Error(), signalCliV2GroupError) {
|
if strings.Contains(err.Error(), signalCliV2GroupError) {
|
||||||
|
|||||||
@@ -944,6 +944,17 @@ var doc = `{
|
|||||||
"api.CreateGroupRequest": {
|
"api.CreateGroupRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
"description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"group_link": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"enabled",
|
||||||
|
"enabled-with-approval",
|
||||||
|
"disabled"
|
||||||
|
]
|
||||||
|
},
|
||||||
"members": {
|
"members": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
@@ -952,6 +963,10 @@ var doc = `{
|
|||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
},
|
||||||
|
"permissions": {
|
||||||
|
"type": "object",
|
||||||
|
"$ref": "#/definitions/api.GroupPermissions"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1009,6 +1024,25 @@ var doc = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"api.GroupPermissions": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"add_members": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"every-member",
|
||||||
|
"only-admins"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"edit_group": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"every-member",
|
||||||
|
"only-admins"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"api.IdentityEntry": {
|
"api.IdentityEntry": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|||||||
@@ -929,6 +929,17 @@
|
|||||||
"api.CreateGroupRequest": {
|
"api.CreateGroupRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
"description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"group_link": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"enabled",
|
||||||
|
"enabled-with-approval",
|
||||||
|
"disabled"
|
||||||
|
]
|
||||||
|
},
|
||||||
"members": {
|
"members": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
@@ -937,6 +948,10 @@
|
|||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
},
|
||||||
|
"permissions": {
|
||||||
|
"type": "object",
|
||||||
|
"$ref": "#/definitions/api.GroupPermissions"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -994,6 +1009,25 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"api.GroupPermissions": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"add_members": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"every-member",
|
||||||
|
"only-admins"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"edit_group": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"every-member",
|
||||||
|
"only-admins"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"api.IdentityEntry": {
|
"api.IdentityEntry": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|||||||
@@ -17,12 +17,23 @@ definitions:
|
|||||||
type: object
|
type: object
|
||||||
api.CreateGroupRequest:
|
api.CreateGroupRequest:
|
||||||
properties:
|
properties:
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
group_link:
|
||||||
|
enum:
|
||||||
|
- enabled
|
||||||
|
- enabled-with-approval
|
||||||
|
- disabled
|
||||||
|
type: string
|
||||||
members:
|
members:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
name:
|
name:
|
||||||
type: string
|
type: string
|
||||||
|
permissions:
|
||||||
|
$ref: '#/definitions/api.GroupPermissions'
|
||||||
|
type: object
|
||||||
type: object
|
type: object
|
||||||
api.CreateGroupResponse:
|
api.CreateGroupResponse:
|
||||||
properties:
|
properties:
|
||||||
@@ -59,6 +70,19 @@ definitions:
|
|||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
type: object
|
type: object
|
||||||
|
api.GroupPermissions:
|
||||||
|
properties:
|
||||||
|
add_members:
|
||||||
|
enum:
|
||||||
|
- every-member
|
||||||
|
- only-admins
|
||||||
|
type: string
|
||||||
|
edit_group:
|
||||||
|
enum:
|
||||||
|
- every-member
|
||||||
|
- only-admins
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
api.IdentityEntry:
|
api.IdentityEntry:
|
||||||
properties:
|
properties:
|
||||||
added:
|
added:
|
||||||
|
|||||||
@@ -22,3 +22,12 @@ func GetIntEnv(key string, defaultVal int) (int, error) {
|
|||||||
}
|
}
|
||||||
return defaultVal, nil
|
return defaultVal, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func StringInSlice(a string, list []string) bool {
|
||||||
|
for _, b := range list {
|
||||||
|
if b == a {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user