提交 5cb923fd 编写于 作者: S serge-rider

#1005 Security management refactoring

上级 464a9267
......@@ -95,14 +95,6 @@
<plugin id="org.eclipse.ui.ide" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.eclipse.ui.editors" download-size="0" install-size="0" version="0.0.0"/>
<!-- Security -->
<plugin id="org.eclipse.equinox.security" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.eclipse.equinox.security.ui" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.eclipse.equinox.security.win32.x86" os="win32" arch="x86" download-size="0" install-size="0" version="0.0.0" fragment="true" unpack="false"/>
<plugin id="org.eclipse.equinox.security.win32.x86_64" os="win32" arch="x86_64" download-size="0" install-size="0" version="0.0.0" fragment="true" unpack="false"/>
<plugin id="org.eclipse.equinox.security.macosx" os="macosx" download-size="0" install-size="0" version="0.0.0" fragment="true" unpack="false"/>
<!-- Eclipse Mars additions -->
<plugin id="org.eclipse.e4.core.di.annotations" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
......
......@@ -51,4 +51,3 @@ pref.page.name.resultset=Result Sets
pref.page.name.resultset.binaries=Binaries
pref.page.name.resultset.presentation=Presentation
pref.page.name.meta=Metadata
pref.page.name.security=Security
......@@ -222,7 +222,6 @@
</page>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.connectionTypes" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnectionTypes" name="%pref.page.name.connectionTypes"/>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.navigator" class="org.jkiss.dbeaver.ui.preferences.PrefPageDatabaseNavigator" name="%pref.page.name.navigator"/>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.security" class="org.jkiss.dbeaver.ui.preferences.PrefPageDatabaseSecurity" name="%pref.page.name.security"/>
<page category="org.eclipse.ui.preferencePages.Editors" id="org.jkiss.dbeaver.preferences.main.sqleditor" class="org.jkiss.dbeaver.ui.preferences.PrefPageSQLEditor" name="%pref.page.name.sql.editor">
<keywordReference id="org.jkiss.dbeaver.core.keyword.pref.editor.sql"/>
......
......@@ -39,7 +39,6 @@ pref.page.name.resources = \u0420\u0435\u0441\u0443\u0440\u0441\u04
pref.page.name.resultset = \u0414\u0430\u043D\u043D\u044B\u0435
pref.page.name.resultset.binaries = \u0414\u0432\u043E\u0438\u0447\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 (LOB)
pref.page.name.resultset.presentation = \u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435
pref.page.name.security = \u0411\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u044C
pref.page.name.sql.editor = \u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 SQL
pref.page.name.sql.execute = \u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432
pref.page.name.sql.format = \u0424\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435
......
......@@ -42,4 +42,3 @@ pref.page.name.resultset=Result Sets
pref.page.name.resultset.binaries=Binaries
pref.page.name.resultset.presentation=Presentation
pref.page.name.meta=Metadata
pref.page.name.security=Security
......@@ -63,7 +63,6 @@
</page>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.connectionTypes" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnectionTypes" name="%pref.page.name.connectionTypes"/>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.navigator" class="org.jkiss.dbeaver.ui.preferences.PrefPageDatabaseNavigator" name="%pref.page.name.navigator"/>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.security" class="org.jkiss.dbeaver.ui.preferences.PrefPageDatabaseSecurity" name="%pref.page.name.security"/>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.main.confirmations" class="org.jkiss.dbeaver.ui.preferences.PrefPageConfirmations" name="%pref.page.name.confirmations"/>
<page category="org.eclipse.ui.preferencePages.Editors" id="org.jkiss.dbeaver.preferences.main.sqleditor" class="org.jkiss.dbeaver.ui.preferences.PrefPageSQLEditor" name="%pref.page.name.sql.editor">
......
......@@ -36,10 +36,6 @@ public final class DBeaverPreferences
public static final String NAVIGATOR_EDITOR_FULL_NAME = "navigator.editor.full-name"; //$NON-NLS-1$
public static final String NAVIGATOR_CONNECTION_DOUBLE_CLICK = "navigator.connection.doubleClick"; //$NON-NLS-1$
public static final String SECURITY_USE_SECURE_PASSWORDS_STORAGE = "security.secure.password.storage"; //$NON-NLS-1$
public static final String SECURITY_USE_MASTER_PASSWORD = "security.master.password.enabled"; //$NON-NLS-1$
public static final String SECURITY_MASTER_PASSWORD_VALUE = "security.master.password.value"; //$NON-NLS-1$
public static final String KEEP_STATEMENT_OPEN = "keep.statement.open"; //$NON-NLS-1$
public static final String SCRIPT_COMMIT_TYPE = "script.commit.type"; //$NON-NLS-1$
......
......@@ -73,11 +73,6 @@ public class DBeaverPreferencesInitializer extends AbstractPreferenceInitializer
PrefUtils.setDefaultPreferenceValue(store, DBeaverPreferences.NAVIGATOR_EDITOR_FULL_NAME, false);
PrefUtils.setDefaultPreferenceValue(store, DBeaverPreferences.NAVIGATOR_CONNECTION_DOUBLE_CLICK, NavigatorViewBase.DoubleClickBehavior.SQL_EDITOR.name());
// Security
PrefUtils.setDefaultPreferenceValue(store, DBeaverPreferences.SECURITY_USE_SECURE_PASSWORDS_STORAGE, false);
PrefUtils.setDefaultPreferenceValue(store, DBeaverPreferences.SECURITY_USE_MASTER_PASSWORD, false);
PrefUtils.setDefaultPreferenceValue(store, DBeaverPreferences.SECURITY_MASTER_PASSWORD_VALUE, "");
// Common
PrefUtils.setDefaultPreferenceValue(store, DBeaverPreferences.KEEP_STATEMENT_OPEN, false);
......
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2016 Serge Rieder (serge@jkiss.org)
* Copyright (C) 2011-2012 Eugene Fradkin (eugene.fradkin@gmail.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License (version 2)
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.jkiss.dbeaver.ui.preferences;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.IWorkbenchPropertyPage;
import org.eclipse.ui.dialogs.PreferenceLinkArea;
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.DBPPreferenceStore;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.utils.PrefUtils;
/**
* PrefPageDatabaseSecurity
*/
public class PrefPageDatabaseSecurity extends AbstractPrefPage implements IWorkbenchPreferencePage, IWorkbenchPropertyPage
{
public static final String PAGE_ID = "org.jkiss.dbeaver.preferences.security"; //$NON-NLS-1$
private Button useSecurePreferences;
private Button useMasterPassword;
private Text masterPasswordText;
public PrefPageDatabaseSecurity()
{
super();
setPreferenceStore(new PreferenceStoreDelegate(DBeaverCore.getGlobalPreferenceStore()));
}
@Override
public void init(IWorkbench workbench)
{
}
@Override
protected Control createContents(Composite parent)
{
Composite composite = UIUtils.createPlaceholder(parent, 1, 5);
{
Group preferencesGroup = UIUtils.createControlGroup(composite, "Security", 1, SWT.NONE, 0);
useSecurePreferences = UIUtils.createCheckbox(preferencesGroup, "Use secure passwords storage", false);
new Label(preferencesGroup, SWT.NONE).setText(
"Using secure storage is more safe than just keeping encrypted passwords in datasources configuration.\n" +
"But it prevents configuration sharing among team of developers.\n" +
"Also it is not portable because passwords are stored in OS-specific storage.");
// Link to secure storage config
PreferenceLinkArea storageLinkArea = new PreferenceLinkArea(preferencesGroup, SWT.NONE,
"org.eclipse.equinox.security.ui.storage",
"See <a>''{0}''</a> for settings related to the encrypted storage system.",
(IWorkbenchPreferenceContainer) getContainer(), null); //$NON-NLS-1$
storageLinkArea.getControl().setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
}
{
Group masterPasswordGroup = UIUtils.createControlGroup(composite, "Master password", 2, SWT.NONE, 0);
useMasterPassword = UIUtils.createCheckbox(masterPasswordGroup, "Use master password", false);
GridData gd = new GridData();
gd.horizontalSpan = 2;
useMasterPassword.setLayoutData(gd);
masterPasswordText = UIUtils.createLabelText(masterPasswordGroup, "Master password", "", SWT.BORDER | SWT.PASSWORD);
final Label label = new Label(masterPasswordGroup, SWT.NONE);
label.setText(
"Master password can be used to prevent usage of DBeaver by unauthorized users.\n" +
"This password will be asked during DBeaver startup.\n" +
"Usually users enable secure storage OR master password. Having both might be 'over-secured'.");
gd = new GridData();
gd.horizontalSpan = 2;
label.setLayoutData(gd);
useMasterPassword.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
masterPasswordText.setEnabled(useMasterPassword.getSelection());
}
});
}
performDefaults();
return composite;
}
@Override
protected void performDefaults()
{
DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore();
useSecurePreferences.setSelection(store.getBoolean(DBeaverPreferences.SECURITY_USE_SECURE_PASSWORDS_STORAGE));
useMasterPassword.setSelection(store.getBoolean(DBeaverPreferences.SECURITY_USE_MASTER_PASSWORD));
masterPasswordText.setEnabled(useMasterPassword.getSelection());
}
@Override
public boolean performOk()
{
DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore();
store.setValue(DBeaverPreferences.SECURITY_USE_SECURE_PASSWORDS_STORAGE, useSecurePreferences.getSelection());
final boolean hasMasterPassword = useMasterPassword.getSelection();
store.setValue(DBeaverPreferences.SECURITY_USE_MASTER_PASSWORD, hasMasterPassword);
if (hasMasterPassword) {
// Update master password hash
}
PrefUtils.savePreferenceStore(store);
return true;
}
@Override
public void applyData(Object data)
{
super.applyData(data);
}
@Nullable
@Override
public IAdaptable getElement()
{
return null;
}
@Override
public void setElement(IAdaptable element)
{
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册