mirror of
				https://github.com/zulip/zulip-desktop.git
				synced 2025-11-04 05:53:21 +00:00 
			
		
		
		
	enterprise: Raise error when removing orgs.
When a user tries to remove a preset org, we raise an error asking them to contact their sys admin.
This commit is contained in:
		
				
					committed by
					
						
						Akash Nimare
					
				
			
			
				
	
			
			
			
						parent
						
							33fadcd876
						
					
				
				
					commit
					a7887211ac
				
			@@ -285,8 +285,15 @@ class ServerManagerView {
 | 
				
			|||||||
				ipcRenderer.send('reload-full-app');
 | 
									ipcRenderer.send('reload-full-app');
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		} else if (domainsAdded.length > 0) {
 | 
							} else if (domainsAdded.length > 0) {
 | 
				
			||||||
			// no enterprise domains added
 | 
								// find all orgs that failed
 | 
				
			||||||
			const { title, content } = Messages.enterpriseOrgError(domainsAdded.length);
 | 
								const failedDomains: string[] = [];
 | 
				
			||||||
 | 
								for (const org of this.presetOrgs) {
 | 
				
			||||||
 | 
									if (DomainUtil.duplicateDomain(org)) {
 | 
				
			||||||
 | 
										continue;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									failedDomains.push(org);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								const { title, content } = Messages.enterpriseOrgError(domainsAdded.length, failedDomains);
 | 
				
			||||||
			dialog.showErrorBox(title, content);
 | 
								dialog.showErrorBox(title, content);
 | 
				
			||||||
			if (DomainUtil.getDomains().length === 0) {
 | 
								if (DomainUtil.getDomains().length === 0) {
 | 
				
			||||||
				// no orgs present, stop showing loading gif
 | 
									// no orgs present, stop showing loading gif
 | 
				
			||||||
@@ -721,8 +728,12 @@ class ServerManagerView {
 | 
				
			|||||||
							message: 'Are you sure you want to disconnect this organization?'
 | 
												message: 'Are you sure you want to disconnect this organization?'
 | 
				
			||||||
						}, response => {
 | 
											}, response => {
 | 
				
			||||||
							if (response === 0) {
 | 
												if (response === 0) {
 | 
				
			||||||
								DomainUtil.removeDomain(index);
 | 
													if (DomainUtil.removeDomain(index)) {
 | 
				
			||||||
									ipcRenderer.send('reload-full-app');
 | 
														ipcRenderer.send('reload-full-app');
 | 
				
			||||||
 | 
													} else {
 | 
				
			||||||
 | 
														const { title, content } = Messages.orgRemovalError(DomainUtil.getDomain(index).url);
 | 
				
			||||||
 | 
														dialog.showErrorBox(title, content);
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
						});
 | 
											});
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@ import { remote, ipcRenderer } from 'electron';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import BaseComponent = require('../../components/base');
 | 
					import BaseComponent = require('../../components/base');
 | 
				
			||||||
import DomainUtil = require('../../utils/domain-util');
 | 
					import DomainUtil = require('../../utils/domain-util');
 | 
				
			||||||
 | 
					import Messages = require('./../../../../resources/messages');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const { dialog } = remote;
 | 
					const { dialog } = remote;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -67,8 +68,12 @@ class ServerInfoForm extends BaseComponent {
 | 
				
			|||||||
				message: 'Are you sure you want to disconnect this organization?'
 | 
									message: 'Are you sure you want to disconnect this organization?'
 | 
				
			||||||
			}, response => {
 | 
								}, response => {
 | 
				
			||||||
				if (response === 0) {
 | 
									if (response === 0) {
 | 
				
			||||||
					DomainUtil.removeDomain(this.props.index);
 | 
										if (DomainUtil.removeDomain(this.props.index)) {
 | 
				
			||||||
					this.props.onChange(this.props.index);
 | 
											ipcRenderer.send('reload-full-app');
 | 
				
			||||||
 | 
										} else {
 | 
				
			||||||
 | 
											const { title, content } = Messages.orgRemovalError(DomainUtil.getDomain(this.props.index).url);
 | 
				
			||||||
 | 
											dialog.showErrorBox(title, content);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,6 +9,7 @@ import Logger = require('./logger-util');
 | 
				
			|||||||
import electron = require('electron');
 | 
					import electron = require('electron');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import RequestUtil = require('./request-util');
 | 
					import RequestUtil = require('./request-util');
 | 
				
			||||||
 | 
					import EnterpriseUtil = require('./enterprise-util');
 | 
				
			||||||
import Messages = require('../../../resources/messages');
 | 
					import Messages = require('../../../resources/messages');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const { app, dialog } = electron.remote;
 | 
					const { app, dialog } = electron.remote;
 | 
				
			||||||
@@ -87,9 +88,13 @@ class DomainUtil {
 | 
				
			|||||||
		this.reloadDB();
 | 
							this.reloadDB();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	removeDomain(index: number): void {
 | 
						removeDomain(index: number): boolean {
 | 
				
			||||||
 | 
							if (EnterpriseUtil.isPresetOrg(this.getDomain(index).url)) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		this.db.delete(`/domains[${index}]`);
 | 
							this.db.delete(`/domains[${index}]`);
 | 
				
			||||||
		this.reloadDB();
 | 
							this.reloadDB();
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if domain is already added
 | 
						// Check if domain is already added
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -52,6 +52,19 @@ class EnterpriseUtil {
 | 
				
			|||||||
		this.reloadDB();
 | 
							this.reloadDB();
 | 
				
			||||||
		return (this.enterpriseSettings[key] !== undefined);
 | 
							return (this.enterpriseSettings[key] !== undefined);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						isPresetOrg(url: string): boolean {
 | 
				
			||||||
 | 
							if (!this.configItemExists('presetOrganizations')) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							const presetOrgs = this.enterpriseSettings.presetOrganizations;
 | 
				
			||||||
 | 
							for (const org of presetOrgs) {
 | 
				
			||||||
 | 
								if (url.includes(org)) {
 | 
				
			||||||
 | 
									return true;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export = new EnterpriseUtil();
 | 
					export = new EnterpriseUtil();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,9 +23,20 @@ class Messages {
 | 
				
			|||||||
		\nYou can click here if you'd like to proceed with the connection.`;
 | 
							\nYou can click here if you'd like to proceed with the connection.`;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	enterpriseOrgError(length: number): any {
 | 
						enterpriseOrgError(length: number, domains: string[]): any {
 | 
				
			||||||
 | 
							let domainList = '';
 | 
				
			||||||
 | 
							for (const domain of domains) {
 | 
				
			||||||
 | 
								domainList += `• ${domain}\n`;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		return {
 | 
							return {
 | 
				
			||||||
			title: `Could not add ${length} ${length === 1 ? `organization` : `organizations`}`,
 | 
								title: `Could not add the following ${length === 1 ? `organization` : `organizations`}`,
 | 
				
			||||||
 | 
								content: `${domainList}\nPlease contact your system administrator.`
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						orgRemovalError(url: string): any {
 | 
				
			||||||
 | 
							return {
 | 
				
			||||||
 | 
								title: `Removing ${url} is a restricted operation.`,
 | 
				
			||||||
			content: `Please contact your system administrator.`
 | 
								content: `Please contact your system administrator.`
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user