github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/model/permission.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package model
     5  
     6  const (
     7  	PERMISSION_SCOPE_SYSTEM  = "system_scope"
     8  	PERMISSION_SCOPE_TEAM    = "team_scope"
     9  	PERMISSION_SCOPE_CHANNEL = "channel_scope"
    10  )
    11  
    12  type Permission struct {
    13  	Id          string `json:"id"`
    14  	Name        string `json:"name"`
    15  	Description string `json:"description"`
    16  	Scope       string `json:"scope"`
    17  }
    18  
    19  var PERMISSION_INVITE_USER *Permission
    20  var PERMISSION_ADD_USER_TO_TEAM *Permission
    21  var PERMISSION_USE_SLASH_COMMANDS *Permission
    22  var PERMISSION_MANAGE_SLASH_COMMANDS *Permission
    23  var PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS *Permission
    24  var PERMISSION_CREATE_PUBLIC_CHANNEL *Permission
    25  var PERMISSION_CREATE_PRIVATE_CHANNEL *Permission
    26  var PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS *Permission
    27  var PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS *Permission
    28  var PERMISSION_ASSIGN_SYSTEM_ADMIN_ROLE *Permission
    29  var PERMISSION_MANAGE_ROLES *Permission
    30  var PERMISSION_MANAGE_TEAM_ROLES *Permission
    31  var PERMISSION_MANAGE_CHANNEL_ROLES *Permission
    32  var PERMISSION_CREATE_DIRECT_CHANNEL *Permission
    33  var PERMISSION_CREATE_GROUP_CHANNEL *Permission
    34  var PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES *Permission
    35  var PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES *Permission
    36  var PERMISSION_LIST_PUBLIC_TEAMS *Permission
    37  var PERMISSION_JOIN_PUBLIC_TEAMS *Permission
    38  var PERMISSION_LIST_PRIVATE_TEAMS *Permission
    39  var PERMISSION_JOIN_PRIVATE_TEAMS *Permission
    40  var PERMISSION_LIST_TEAM_CHANNELS *Permission
    41  var PERMISSION_JOIN_PUBLIC_CHANNELS *Permission
    42  var PERMISSION_DELETE_PUBLIC_CHANNEL *Permission
    43  var PERMISSION_DELETE_PRIVATE_CHANNEL *Permission
    44  var PERMISSION_EDIT_OTHER_USERS *Permission
    45  var PERMISSION_READ_CHANNEL *Permission
    46  var PERMISSION_READ_PUBLIC_CHANNEL *Permission
    47  var PERMISSION_ADD_REACTION *Permission
    48  var PERMISSION_REMOVE_REACTION *Permission
    49  var PERMISSION_REMOVE_OTHERS_REACTIONS *Permission
    50  var PERMISSION_PERMANENT_DELETE_USER *Permission
    51  var PERMISSION_UPLOAD_FILE *Permission
    52  var PERMISSION_GET_PUBLIC_LINK *Permission
    53  var PERMISSION_MANAGE_WEBHOOKS *Permission
    54  var PERMISSION_MANAGE_OTHERS_WEBHOOKS *Permission
    55  var PERMISSION_MANAGE_INCOMING_WEBHOOKS *Permission
    56  var PERMISSION_MANAGE_OUTGOING_WEBHOOKS *Permission
    57  var PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS *Permission
    58  var PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS *Permission
    59  var PERMISSION_MANAGE_OAUTH *Permission
    60  var PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH *Permission
    61  var PERMISSION_MANAGE_EMOJIS *Permission
    62  var PERMISSION_MANAGE_OTHERS_EMOJIS *Permission
    63  var PERMISSION_CREATE_EMOJIS *Permission
    64  var PERMISSION_DELETE_EMOJIS *Permission
    65  var PERMISSION_DELETE_OTHERS_EMOJIS *Permission
    66  var PERMISSION_CREATE_POST *Permission
    67  var PERMISSION_CREATE_POST_PUBLIC *Permission
    68  var PERMISSION_CREATE_POST_EPHEMERAL *Permission
    69  var PERMISSION_EDIT_POST *Permission
    70  var PERMISSION_EDIT_OTHERS_POSTS *Permission
    71  var PERMISSION_DELETE_POST *Permission
    72  var PERMISSION_DELETE_OTHERS_POSTS *Permission
    73  var PERMISSION_REMOVE_USER_FROM_TEAM *Permission
    74  var PERMISSION_CREATE_TEAM *Permission
    75  var PERMISSION_MANAGE_TEAM *Permission
    76  var PERMISSION_IMPORT_TEAM *Permission
    77  var PERMISSION_VIEW_TEAM *Permission
    78  var PERMISSION_LIST_USERS_WITHOUT_TEAM *Permission
    79  var PERMISSION_MANAGE_JOBS *Permission
    80  var PERMISSION_CREATE_USER_ACCESS_TOKEN *Permission
    81  var PERMISSION_READ_USER_ACCESS_TOKEN *Permission
    82  var PERMISSION_REVOKE_USER_ACCESS_TOKEN *Permission
    83  var PERMISSION_CREATE_BOT *Permission
    84  var PERMISSION_ASSIGN_BOT *Permission
    85  var PERMISSION_READ_BOTS *Permission
    86  var PERMISSION_READ_OTHERS_BOTS *Permission
    87  var PERMISSION_MANAGE_BOTS *Permission
    88  var PERMISSION_MANAGE_OTHERS_BOTS *Permission
    89  var PERMISSION_VIEW_MEMBERS *Permission
    90  var PERMISSION_INVITE_GUEST *Permission
    91  var PERMISSION_PROMOTE_GUEST *Permission
    92  var PERMISSION_DEMOTE_TO_GUEST *Permission
    93  var PERMISSION_USE_CHANNEL_MENTIONS *Permission
    94  var PERMISSION_USE_GROUP_MENTIONS *Permission
    95  
    96  // General permission that encompasses all system admin functions
    97  // in the future this could be broken up to allow access to some
    98  // admin functions but not others
    99  var PERMISSION_MANAGE_SYSTEM *Permission
   100  
   101  var ALL_PERMISSIONS []*Permission
   102  
   103  var CHANNEL_MODERATED_PERMISSIONS []string
   104  var CHANNEL_MODERATED_PERMISSIONS_MAP map[string]string
   105  
   106  func initializePermissions() {
   107  	PERMISSION_INVITE_USER = &Permission{
   108  		"invite_user",
   109  		"authentication.permissions.team_invite_user.name",
   110  		"authentication.permissions.team_invite_user.description",
   111  		PERMISSION_SCOPE_TEAM,
   112  	}
   113  	PERMISSION_ADD_USER_TO_TEAM = &Permission{
   114  		"add_user_to_team",
   115  		"authentication.permissions.add_user_to_team.name",
   116  		"authentication.permissions.add_user_to_team.description",
   117  		PERMISSION_SCOPE_TEAM,
   118  	}
   119  	PERMISSION_USE_SLASH_COMMANDS = &Permission{
   120  		"use_slash_commands",
   121  		"authentication.permissions.team_use_slash_commands.name",
   122  		"authentication.permissions.team_use_slash_commands.description",
   123  		PERMISSION_SCOPE_CHANNEL,
   124  	}
   125  	PERMISSION_MANAGE_SLASH_COMMANDS = &Permission{
   126  		"manage_slash_commands",
   127  		"authentication.permissions.manage_slash_commands.name",
   128  		"authentication.permissions.manage_slash_commands.description",
   129  		PERMISSION_SCOPE_TEAM,
   130  	}
   131  	PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS = &Permission{
   132  		"manage_others_slash_commands",
   133  		"authentication.permissions.manage_others_slash_commands.name",
   134  		"authentication.permissions.manage_others_slash_commands.description",
   135  		PERMISSION_SCOPE_TEAM,
   136  	}
   137  	PERMISSION_CREATE_PUBLIC_CHANNEL = &Permission{
   138  		"create_public_channel",
   139  		"authentication.permissions.create_public_channel.name",
   140  		"authentication.permissions.create_public_channel.description",
   141  		PERMISSION_SCOPE_TEAM,
   142  	}
   143  	PERMISSION_CREATE_PRIVATE_CHANNEL = &Permission{
   144  		"create_private_channel",
   145  		"authentication.permissions.create_private_channel.name",
   146  		"authentication.permissions.create_private_channel.description",
   147  		PERMISSION_SCOPE_TEAM,
   148  	}
   149  	PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS = &Permission{
   150  		"manage_public_channel_members",
   151  		"authentication.permissions.manage_public_channel_members.name",
   152  		"authentication.permissions.manage_public_channel_members.description",
   153  		PERMISSION_SCOPE_CHANNEL,
   154  	}
   155  	PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS = &Permission{
   156  		"manage_private_channel_members",
   157  		"authentication.permissions.manage_private_channel_members.name",
   158  		"authentication.permissions.manage_private_channel_members.description",
   159  		PERMISSION_SCOPE_CHANNEL,
   160  	}
   161  	PERMISSION_ASSIGN_SYSTEM_ADMIN_ROLE = &Permission{
   162  		"assign_system_admin_role",
   163  		"authentication.permissions.assign_system_admin_role.name",
   164  		"authentication.permissions.assign_system_admin_role.description",
   165  		PERMISSION_SCOPE_SYSTEM,
   166  	}
   167  	PERMISSION_MANAGE_ROLES = &Permission{
   168  		"manage_roles",
   169  		"authentication.permissions.manage_roles.name",
   170  		"authentication.permissions.manage_roles.description",
   171  		PERMISSION_SCOPE_SYSTEM,
   172  	}
   173  	PERMISSION_MANAGE_TEAM_ROLES = &Permission{
   174  		"manage_team_roles",
   175  		"authentication.permissions.manage_team_roles.name",
   176  		"authentication.permissions.manage_team_roles.description",
   177  		PERMISSION_SCOPE_TEAM,
   178  	}
   179  	PERMISSION_MANAGE_CHANNEL_ROLES = &Permission{
   180  		"manage_channel_roles",
   181  		"authentication.permissions.manage_channel_roles.name",
   182  		"authentication.permissions.manage_channel_roles.description",
   183  		PERMISSION_SCOPE_CHANNEL,
   184  	}
   185  	PERMISSION_MANAGE_SYSTEM = &Permission{
   186  		"manage_system",
   187  		"authentication.permissions.manage_system.name",
   188  		"authentication.permissions.manage_system.description",
   189  		PERMISSION_SCOPE_SYSTEM,
   190  	}
   191  	PERMISSION_CREATE_DIRECT_CHANNEL = &Permission{
   192  		"create_direct_channel",
   193  		"authentication.permissions.create_direct_channel.name",
   194  		"authentication.permissions.create_direct_channel.description",
   195  		PERMISSION_SCOPE_SYSTEM,
   196  	}
   197  	PERMISSION_CREATE_GROUP_CHANNEL = &Permission{
   198  		"create_group_channel",
   199  		"authentication.permissions.create_group_channel.name",
   200  		"authentication.permissions.create_group_channel.description",
   201  		PERMISSION_SCOPE_SYSTEM,
   202  	}
   203  	PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES = &Permission{
   204  		"manage_public_channel_properties",
   205  		"authentication.permissions.manage_public_channel_properties.name",
   206  		"authentication.permissions.manage_public_channel_properties.description",
   207  		PERMISSION_SCOPE_CHANNEL,
   208  	}
   209  	PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES = &Permission{
   210  		"manage_private_channel_properties",
   211  		"authentication.permissions.manage_private_channel_properties.name",
   212  		"authentication.permissions.manage_private_channel_properties.description",
   213  		PERMISSION_SCOPE_CHANNEL,
   214  	}
   215  	PERMISSION_LIST_PUBLIC_TEAMS = &Permission{
   216  		"list_public_teams",
   217  		"authentication.permissions.list_public_teams.name",
   218  		"authentication.permissions.list_public_teams.description",
   219  		PERMISSION_SCOPE_SYSTEM,
   220  	}
   221  	PERMISSION_JOIN_PUBLIC_TEAMS = &Permission{
   222  		"join_public_teams",
   223  		"authentication.permissions.join_public_teams.name",
   224  		"authentication.permissions.join_public_teams.description",
   225  		PERMISSION_SCOPE_SYSTEM,
   226  	}
   227  	PERMISSION_LIST_PRIVATE_TEAMS = &Permission{
   228  		"list_private_teams",
   229  		"authentication.permissions.list_private_teams.name",
   230  		"authentication.permissions.list_private_teams.description",
   231  		PERMISSION_SCOPE_SYSTEM,
   232  	}
   233  	PERMISSION_JOIN_PRIVATE_TEAMS = &Permission{
   234  		"join_private_teams",
   235  		"authentication.permissions.join_private_teams.name",
   236  		"authentication.permissions.join_private_teams.description",
   237  		PERMISSION_SCOPE_SYSTEM,
   238  	}
   239  	PERMISSION_LIST_TEAM_CHANNELS = &Permission{
   240  		"list_team_channels",
   241  		"authentication.permissions.list_team_channels.name",
   242  		"authentication.permissions.list_team_channels.description",
   243  		PERMISSION_SCOPE_TEAM,
   244  	}
   245  	PERMISSION_JOIN_PUBLIC_CHANNELS = &Permission{
   246  		"join_public_channels",
   247  		"authentication.permissions.join_public_channels.name",
   248  		"authentication.permissions.join_public_channels.description",
   249  		PERMISSION_SCOPE_TEAM,
   250  	}
   251  	PERMISSION_DELETE_PUBLIC_CHANNEL = &Permission{
   252  		"delete_public_channel",
   253  		"authentication.permissions.delete_public_channel.name",
   254  		"authentication.permissions.delete_public_channel.description",
   255  		PERMISSION_SCOPE_CHANNEL,
   256  	}
   257  	PERMISSION_DELETE_PRIVATE_CHANNEL = &Permission{
   258  		"delete_private_channel",
   259  		"authentication.permissions.delete_private_channel.name",
   260  		"authentication.permissions.delete_private_channel.description",
   261  		PERMISSION_SCOPE_CHANNEL,
   262  	}
   263  	PERMISSION_EDIT_OTHER_USERS = &Permission{
   264  		"edit_other_users",
   265  		"authentication.permissions.edit_other_users.name",
   266  		"authentication.permissions.edit_other_users.description",
   267  		PERMISSION_SCOPE_SYSTEM,
   268  	}
   269  	PERMISSION_READ_CHANNEL = &Permission{
   270  		"read_channel",
   271  		"authentication.permissions.read_channel.name",
   272  		"authentication.permissions.read_channel.description",
   273  		PERMISSION_SCOPE_CHANNEL,
   274  	}
   275  	PERMISSION_READ_PUBLIC_CHANNEL = &Permission{
   276  		"read_public_channel",
   277  		"authentication.permissions.read_public_channel.name",
   278  		"authentication.permissions.read_public_channel.description",
   279  		PERMISSION_SCOPE_TEAM,
   280  	}
   281  	PERMISSION_ADD_REACTION = &Permission{
   282  		"add_reaction",
   283  		"authentication.permissions.add_reaction.name",
   284  		"authentication.permissions.add_reaction.description",
   285  		PERMISSION_SCOPE_CHANNEL,
   286  	}
   287  	PERMISSION_REMOVE_REACTION = &Permission{
   288  		"remove_reaction",
   289  		"authentication.permissions.remove_reaction.name",
   290  		"authentication.permissions.remove_reaction.description",
   291  		PERMISSION_SCOPE_CHANNEL,
   292  	}
   293  	PERMISSION_REMOVE_OTHERS_REACTIONS = &Permission{
   294  		"remove_others_reactions",
   295  		"authentication.permissions.remove_others_reactions.name",
   296  		"authentication.permissions.remove_others_reactions.description",
   297  		PERMISSION_SCOPE_CHANNEL,
   298  	}
   299  	// DEPRECATED
   300  	PERMISSION_PERMANENT_DELETE_USER = &Permission{
   301  		"permanent_delete_user",
   302  		"authentication.permissions.permanent_delete_user.name",
   303  		"authentication.permissions.permanent_delete_user.description",
   304  		PERMISSION_SCOPE_SYSTEM,
   305  	}
   306  	PERMISSION_UPLOAD_FILE = &Permission{
   307  		"upload_file",
   308  		"authentication.permissions.upload_file.name",
   309  		"authentication.permissions.upload_file.description",
   310  		PERMISSION_SCOPE_CHANNEL,
   311  	}
   312  	PERMISSION_GET_PUBLIC_LINK = &Permission{
   313  		"get_public_link",
   314  		"authentication.permissions.get_public_link.name",
   315  		"authentication.permissions.get_public_link.description",
   316  		PERMISSION_SCOPE_SYSTEM,
   317  	}
   318  	// DEPRECATED
   319  	PERMISSION_MANAGE_WEBHOOKS = &Permission{
   320  		"manage_webhooks",
   321  		"authentication.permissions.manage_webhooks.name",
   322  		"authentication.permissions.manage_webhooks.description",
   323  		PERMISSION_SCOPE_TEAM,
   324  	}
   325  	// DEPRECATED
   326  	PERMISSION_MANAGE_OTHERS_WEBHOOKS = &Permission{
   327  		"manage_others_webhooks",
   328  		"authentication.permissions.manage_others_webhooks.name",
   329  		"authentication.permissions.manage_others_webhooks.description",
   330  		PERMISSION_SCOPE_TEAM,
   331  	}
   332  	PERMISSION_MANAGE_INCOMING_WEBHOOKS = &Permission{
   333  		"manage_incoming_webhooks",
   334  		"authentication.permissions.manage_incoming_webhooks.name",
   335  		"authentication.permissions.manage_incoming_webhooks.description",
   336  		PERMISSION_SCOPE_TEAM,
   337  	}
   338  	PERMISSION_MANAGE_OUTGOING_WEBHOOKS = &Permission{
   339  		"manage_outgoing_webhooks",
   340  		"authentication.permissions.manage_outgoing_webhooks.name",
   341  		"authentication.permissions.manage_outgoing_webhooks.description",
   342  		PERMISSION_SCOPE_TEAM,
   343  	}
   344  	PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS = &Permission{
   345  		"manage_others_incoming_webhooks",
   346  		"authentication.permissions.manage_others_incoming_webhooks.name",
   347  		"authentication.permissions.manage_others_incoming_webhooks.description",
   348  		PERMISSION_SCOPE_TEAM,
   349  	}
   350  	PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS = &Permission{
   351  		"manage_others_outgoing_webhooks",
   352  		"authentication.permissions.manage_others_outgoing_webhooks.name",
   353  		"authentication.permissions.manage_others_outgoing_webhooks.description",
   354  		PERMISSION_SCOPE_TEAM,
   355  	}
   356  	PERMISSION_MANAGE_OAUTH = &Permission{
   357  		"manage_oauth",
   358  		"authentication.permissions.manage_oauth.name",
   359  		"authentication.permissions.manage_oauth.description",
   360  		PERMISSION_SCOPE_SYSTEM,
   361  	}
   362  	PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH = &Permission{
   363  		"manage_system_wide_oauth",
   364  		"authentication.permissions.manage_system_wide_oauth.name",
   365  		"authentication.permissions.manage_system_wide_oauth.description",
   366  		PERMISSION_SCOPE_SYSTEM,
   367  	}
   368  	// DEPRECATED
   369  	PERMISSION_MANAGE_EMOJIS = &Permission{
   370  		"manage_emojis",
   371  		"authentication.permissions.manage_emojis.name",
   372  		"authentication.permissions.manage_emojis.description",
   373  		PERMISSION_SCOPE_TEAM,
   374  	}
   375  	// DEPRECATED
   376  	PERMISSION_MANAGE_OTHERS_EMOJIS = &Permission{
   377  		"manage_others_emojis",
   378  		"authentication.permissions.manage_others_emojis.name",
   379  		"authentication.permissions.manage_others_emojis.description",
   380  		PERMISSION_SCOPE_TEAM,
   381  	}
   382  	PERMISSION_CREATE_EMOJIS = &Permission{
   383  		"create_emojis",
   384  		"authentication.permissions.create_emojis.name",
   385  		"authentication.permissions.create_emojis.description",
   386  		PERMISSION_SCOPE_TEAM,
   387  	}
   388  	PERMISSION_DELETE_EMOJIS = &Permission{
   389  		"delete_emojis",
   390  		"authentication.permissions.delete_emojis.name",
   391  		"authentication.permissions.delete_emojis.description",
   392  		PERMISSION_SCOPE_TEAM,
   393  	}
   394  	PERMISSION_DELETE_OTHERS_EMOJIS = &Permission{
   395  		"delete_others_emojis",
   396  		"authentication.permissions.delete_others_emojis.name",
   397  		"authentication.permissions.delete_others_emojis.description",
   398  		PERMISSION_SCOPE_TEAM,
   399  	}
   400  	PERMISSION_CREATE_POST = &Permission{
   401  		"create_post",
   402  		"authentication.permissions.create_post.name",
   403  		"authentication.permissions.create_post.description",
   404  		PERMISSION_SCOPE_CHANNEL,
   405  	}
   406  	PERMISSION_CREATE_POST_PUBLIC = &Permission{
   407  		"create_post_public",
   408  		"authentication.permissions.create_post_public.name",
   409  		"authentication.permissions.create_post_public.description",
   410  		PERMISSION_SCOPE_CHANNEL,
   411  	}
   412  	PERMISSION_CREATE_POST_EPHEMERAL = &Permission{
   413  		"create_post_ephemeral",
   414  		"authentication.permissions.create_post_ephemeral.name",
   415  		"authentication.permissions.create_post_ephemeral.description",
   416  		PERMISSION_SCOPE_CHANNEL,
   417  	}
   418  	PERMISSION_EDIT_POST = &Permission{
   419  		"edit_post",
   420  		"authentication.permissions.edit_post.name",
   421  		"authentication.permissions.edit_post.description",
   422  		PERMISSION_SCOPE_CHANNEL,
   423  	}
   424  	PERMISSION_EDIT_OTHERS_POSTS = &Permission{
   425  		"edit_others_posts",
   426  		"authentication.permissions.edit_others_posts.name",
   427  		"authentication.permissions.edit_others_posts.description",
   428  		PERMISSION_SCOPE_CHANNEL,
   429  	}
   430  	PERMISSION_DELETE_POST = &Permission{
   431  		"delete_post",
   432  		"authentication.permissions.delete_post.name",
   433  		"authentication.permissions.delete_post.description",
   434  		PERMISSION_SCOPE_CHANNEL,
   435  	}
   436  	PERMISSION_DELETE_OTHERS_POSTS = &Permission{
   437  		"delete_others_posts",
   438  		"authentication.permissions.delete_others_posts.name",
   439  		"authentication.permissions.delete_others_posts.description",
   440  		PERMISSION_SCOPE_CHANNEL,
   441  	}
   442  	PERMISSION_REMOVE_USER_FROM_TEAM = &Permission{
   443  		"remove_user_from_team",
   444  		"authentication.permissions.remove_user_from_team.name",
   445  		"authentication.permissions.remove_user_from_team.description",
   446  		PERMISSION_SCOPE_TEAM,
   447  	}
   448  	PERMISSION_CREATE_TEAM = &Permission{
   449  		"create_team",
   450  		"authentication.permissions.create_team.name",
   451  		"authentication.permissions.create_team.description",
   452  		PERMISSION_SCOPE_SYSTEM,
   453  	}
   454  	PERMISSION_MANAGE_TEAM = &Permission{
   455  		"manage_team",
   456  		"authentication.permissions.manage_team.name",
   457  		"authentication.permissions.manage_team.description",
   458  		PERMISSION_SCOPE_TEAM,
   459  	}
   460  	PERMISSION_IMPORT_TEAM = &Permission{
   461  		"import_team",
   462  		"authentication.permissions.import_team.name",
   463  		"authentication.permissions.import_team.description",
   464  		PERMISSION_SCOPE_TEAM,
   465  	}
   466  	PERMISSION_VIEW_TEAM = &Permission{
   467  		"view_team",
   468  		"authentication.permissions.view_team.name",
   469  		"authentication.permissions.view_team.description",
   470  		PERMISSION_SCOPE_TEAM,
   471  	}
   472  	PERMISSION_LIST_USERS_WITHOUT_TEAM = &Permission{
   473  		"list_users_without_team",
   474  		"authentication.permissions.list_users_without_team.name",
   475  		"authentication.permissions.list_users_without_team.description",
   476  		PERMISSION_SCOPE_SYSTEM,
   477  	}
   478  	PERMISSION_CREATE_USER_ACCESS_TOKEN = &Permission{
   479  		"create_user_access_token",
   480  		"authentication.permissions.create_user_access_token.name",
   481  		"authentication.permissions.create_user_access_token.description",
   482  		PERMISSION_SCOPE_SYSTEM,
   483  	}
   484  	PERMISSION_READ_USER_ACCESS_TOKEN = &Permission{
   485  		"read_user_access_token",
   486  		"authentication.permissions.read_user_access_token.name",
   487  		"authentication.permissions.read_user_access_token.description",
   488  		PERMISSION_SCOPE_SYSTEM,
   489  	}
   490  	PERMISSION_REVOKE_USER_ACCESS_TOKEN = &Permission{
   491  		"revoke_user_access_token",
   492  		"authentication.permissions.revoke_user_access_token.name",
   493  		"authentication.permissions.revoke_user_access_token.description",
   494  		PERMISSION_SCOPE_SYSTEM,
   495  	}
   496  	PERMISSION_CREATE_BOT = &Permission{
   497  		"create_bot",
   498  		"authentication.permissions.create_bot.name",
   499  		"authentication.permissions.create_bot.description",
   500  		PERMISSION_SCOPE_SYSTEM,
   501  	}
   502  	PERMISSION_ASSIGN_BOT = &Permission{
   503  		"assign_bot",
   504  		"authentication.permissions.assign_bot.name",
   505  		"authentication.permissions.assign_bot.description",
   506  		PERMISSION_SCOPE_SYSTEM,
   507  	}
   508  	PERMISSION_READ_BOTS = &Permission{
   509  		"read_bots",
   510  		"authentication.permissions.read_bots.name",
   511  		"authentication.permissions.read_bots.description",
   512  		PERMISSION_SCOPE_SYSTEM,
   513  	}
   514  	PERMISSION_READ_OTHERS_BOTS = &Permission{
   515  		"read_others_bots",
   516  		"authentication.permissions.read_others_bots.name",
   517  		"authentication.permissions.read_others_bots.description",
   518  		PERMISSION_SCOPE_SYSTEM,
   519  	}
   520  	PERMISSION_MANAGE_BOTS = &Permission{
   521  		"manage_bots",
   522  		"authentication.permissions.manage_bots.name",
   523  		"authentication.permissions.manage_bots.description",
   524  		PERMISSION_SCOPE_SYSTEM,
   525  	}
   526  	PERMISSION_MANAGE_OTHERS_BOTS = &Permission{
   527  		"manage_others_bots",
   528  		"authentication.permissions.manage_others_bots.name",
   529  		"authentication.permissions.manage_others_bots.description",
   530  		PERMISSION_SCOPE_SYSTEM,
   531  	}
   532  	PERMISSION_MANAGE_JOBS = &Permission{
   533  		"manage_jobs",
   534  		"authentication.permisssions.manage_jobs.name",
   535  		"authentication.permisssions.manage_jobs.description",
   536  		PERMISSION_SCOPE_SYSTEM,
   537  	}
   538  	PERMISSION_VIEW_MEMBERS = &Permission{
   539  		"view_members",
   540  		"authentication.permisssions.view_members.name",
   541  		"authentication.permisssions.view_members.description",
   542  		PERMISSION_SCOPE_TEAM,
   543  	}
   544  	PERMISSION_INVITE_GUEST = &Permission{
   545  		"invite_guest",
   546  		"authentication.permissions.invite_guest.name",
   547  		"authentication.permissions.invite_guest.description",
   548  		PERMISSION_SCOPE_TEAM,
   549  	}
   550  	PERMISSION_PROMOTE_GUEST = &Permission{
   551  		"promote_guest",
   552  		"authentication.permissions.promote_guest.name",
   553  		"authentication.permissions.promote_guest.description",
   554  		PERMISSION_SCOPE_SYSTEM,
   555  	}
   556  
   557  	PERMISSION_DEMOTE_TO_GUEST = &Permission{
   558  		"demote_to_guest",
   559  		"authentication.permissions.demote_to_guest.name",
   560  		"authentication.permissions.demote_to_guest.description",
   561  		PERMISSION_SCOPE_SYSTEM,
   562  	}
   563  
   564  	PERMISSION_USE_CHANNEL_MENTIONS = &Permission{
   565  		"use_channel_mentions",
   566  		"authentication.permissions.use_channel_mentions.name",
   567  		"authentication.permissions.use_channel_mentions.description",
   568  		PERMISSION_SCOPE_CHANNEL,
   569  	}
   570  
   571  	PERMISSION_USE_GROUP_MENTIONS = &Permission{
   572  		"use_group_mentions",
   573  		"authentication.permissions.use_group_mentions.name",
   574  		"authentication.permissions.use_group_mentions.description",
   575  		PERMISSION_SCOPE_CHANNEL,
   576  	}
   577  
   578  	ALL_PERMISSIONS = []*Permission{
   579  		PERMISSION_INVITE_USER,
   580  		PERMISSION_ADD_USER_TO_TEAM,
   581  		PERMISSION_USE_SLASH_COMMANDS,
   582  		PERMISSION_MANAGE_SLASH_COMMANDS,
   583  		PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS,
   584  		PERMISSION_CREATE_PUBLIC_CHANNEL,
   585  		PERMISSION_CREATE_PRIVATE_CHANNEL,
   586  		PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS,
   587  		PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS,
   588  		PERMISSION_ASSIGN_SYSTEM_ADMIN_ROLE,
   589  		PERMISSION_MANAGE_ROLES,
   590  		PERMISSION_MANAGE_TEAM_ROLES,
   591  		PERMISSION_MANAGE_CHANNEL_ROLES,
   592  		PERMISSION_CREATE_DIRECT_CHANNEL,
   593  		PERMISSION_CREATE_GROUP_CHANNEL,
   594  		PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES,
   595  		PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES,
   596  		PERMISSION_LIST_PUBLIC_TEAMS,
   597  		PERMISSION_JOIN_PUBLIC_TEAMS,
   598  		PERMISSION_LIST_PRIVATE_TEAMS,
   599  		PERMISSION_JOIN_PRIVATE_TEAMS,
   600  		PERMISSION_LIST_TEAM_CHANNELS,
   601  		PERMISSION_JOIN_PUBLIC_CHANNELS,
   602  		PERMISSION_DELETE_PUBLIC_CHANNEL,
   603  		PERMISSION_DELETE_PRIVATE_CHANNEL,
   604  		PERMISSION_EDIT_OTHER_USERS,
   605  		PERMISSION_READ_CHANNEL,
   606  		PERMISSION_READ_PUBLIC_CHANNEL,
   607  		PERMISSION_ADD_REACTION,
   608  		PERMISSION_REMOVE_REACTION,
   609  		PERMISSION_REMOVE_OTHERS_REACTIONS,
   610  		PERMISSION_PERMANENT_DELETE_USER,
   611  		PERMISSION_UPLOAD_FILE,
   612  		PERMISSION_GET_PUBLIC_LINK,
   613  		PERMISSION_MANAGE_WEBHOOKS,
   614  		PERMISSION_MANAGE_OTHERS_WEBHOOKS,
   615  		PERMISSION_MANAGE_INCOMING_WEBHOOKS,
   616  		PERMISSION_MANAGE_OUTGOING_WEBHOOKS,
   617  		PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS,
   618  		PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS,
   619  		PERMISSION_MANAGE_OAUTH,
   620  		PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH,
   621  		PERMISSION_MANAGE_EMOJIS,
   622  		PERMISSION_MANAGE_OTHERS_EMOJIS,
   623  		PERMISSION_CREATE_EMOJIS,
   624  		PERMISSION_DELETE_EMOJIS,
   625  		PERMISSION_DELETE_OTHERS_EMOJIS,
   626  		PERMISSION_CREATE_POST,
   627  		PERMISSION_CREATE_POST_PUBLIC,
   628  		PERMISSION_CREATE_POST_EPHEMERAL,
   629  		PERMISSION_EDIT_POST,
   630  		PERMISSION_EDIT_OTHERS_POSTS,
   631  		PERMISSION_DELETE_POST,
   632  		PERMISSION_DELETE_OTHERS_POSTS,
   633  		PERMISSION_REMOVE_USER_FROM_TEAM,
   634  		PERMISSION_CREATE_TEAM,
   635  		PERMISSION_MANAGE_TEAM,
   636  		PERMISSION_IMPORT_TEAM,
   637  		PERMISSION_VIEW_TEAM,
   638  		PERMISSION_LIST_USERS_WITHOUT_TEAM,
   639  		PERMISSION_MANAGE_JOBS,
   640  		PERMISSION_CREATE_USER_ACCESS_TOKEN,
   641  		PERMISSION_READ_USER_ACCESS_TOKEN,
   642  		PERMISSION_REVOKE_USER_ACCESS_TOKEN,
   643  		PERMISSION_CREATE_BOT,
   644  		PERMISSION_READ_BOTS,
   645  		PERMISSION_READ_OTHERS_BOTS,
   646  		PERMISSION_MANAGE_BOTS,
   647  		PERMISSION_MANAGE_OTHERS_BOTS,
   648  		PERMISSION_MANAGE_SYSTEM,
   649  		PERMISSION_VIEW_MEMBERS,
   650  		PERMISSION_INVITE_GUEST,
   651  		PERMISSION_PROMOTE_GUEST,
   652  		PERMISSION_DEMOTE_TO_GUEST,
   653  		PERMISSION_USE_CHANNEL_MENTIONS,
   654  		PERMISSION_USE_GROUP_MENTIONS,
   655  	}
   656  
   657  	CHANNEL_MODERATED_PERMISSIONS = []string{
   658  		PERMISSION_CREATE_POST.Id,
   659  		"create_reactions",
   660  		"manage_members",
   661  		PERMISSION_USE_CHANNEL_MENTIONS.Id,
   662  	}
   663  
   664  	CHANNEL_MODERATED_PERMISSIONS_MAP = map[string]string{
   665  		PERMISSION_CREATE_POST.Id:                    CHANNEL_MODERATED_PERMISSIONS[0],
   666  		PERMISSION_ADD_REACTION.Id:                   CHANNEL_MODERATED_PERMISSIONS[1],
   667  		PERMISSION_REMOVE_REACTION.Id:                CHANNEL_MODERATED_PERMISSIONS[1],
   668  		PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS.Id:  CHANNEL_MODERATED_PERMISSIONS[2],
   669  		PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS.Id: CHANNEL_MODERATED_PERMISSIONS[2],
   670  		PERMISSION_USE_CHANNEL_MENTIONS.Id:           CHANNEL_MODERATED_PERMISSIONS[3],
   671  	}
   672  }
   673  
   674  func init() {
   675  	initializePermissions()
   676  }