7272 </a >
7373 </b-table-column >
7474 </b-table >
75+
76+ <b-table :data =" allMessengers" :checked-rows.sync =" form.messengers" checkbox-position =" right" checkable >
77+ <b-table-column v-slot =" props" field =" id" :label =" $t('globals.terms.messengers')" >
78+ {{ props.row.id }}
79+ </b-table-column >
80+ </b-table >
7581 </div >
7682
7783 <template v-if =" type === ' user' " >
@@ -142,8 +148,10 @@ export default Vue.extend({
142148 curList: null ,
143149 lists: [],
144150 name: null ,
151+ messengers: [],
145152 permissions: {},
146153 },
154+ allMessengers: [],
147155 hasToggle: false ,
148156 disabled: false ,
149157 };
@@ -195,6 +203,7 @@ export default Vue.extend({
195203 form .permissions = this .form .permissions ;
196204 } else {
197205 fn = this .$api .createListRole ;
206+ form .messengers = this .form .messengers .map (({ id }) => id);
198207 form .lists = this .form .lists .reduce ((acc , item ) => {
199208 acc .push ({ id: item .id , permissions: item .permissions });
200209 return acc;
@@ -217,6 +226,7 @@ export default Vue.extend({
217226 form .permissions = this .form .permissions ;
218227 } else {
219228 fn = this .$api .updateListRole ;
229+ form .messengers = this .form .messengers .map (({ id }) => id);
220230 form .lists = this .form .lists .reduce ((acc , item ) => {
221231 acc .push ({ id: item .id , permissions: item .permissions });
222232 return acc;
@@ -247,8 +257,14 @@ export default Vue.extend({
247257 },
248258
249259 mounted () {
260+ this .allMessengers .push (... this .serverConfig .messengers .map ((id ) => ({ id })));
250261 if (this .isEditing ) {
251262 this .form = { ... this .form , ... this .$props .data };
263+ this .form .messengers = [... this .allMessengers ];
264+ if (this .$props .data .messengers !== null ) {
265+ this .form .messengers = this .form .messengers
266+ .filter (({ id }) => this .$props .data .messengers .includes (id));
267+ }
252268
253269 // It's the superadmin role. Disable the form.
254270 if (this .$props .data .id === 1 || ! this .$can (' roles:manage' )) {
@@ -264,6 +280,7 @@ export default Vue.extend({
264280 ' campaigns:get_all' ,
265281 ' campaigns:manage_all' ,
266282 ];
283+ this .form .messengers = [... this .allMessengers ];
267284 this .form .permissions = this .serverConfig .permissions .reduce ((acc , item ) => {
268285 if (disabledGroups .includes (item .group )) return acc;
269286 item .permissions .forEach ((p ) => {
0 commit comments