From cd67ddc8b6800778a08cbc8828ae761df874d5c0 Mon Sep 17 00:00:00 2001 From: Richardas Kuchinskas Date: Wed, 13 Dec 2023 15:31:48 +0300 Subject: [PATCH] added yubikey password characters validator --- .../vk/admstorm/ssh/EnterPasswordDialog.kt | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/kotlin/com/vk/admstorm/ssh/EnterPasswordDialog.kt b/src/main/kotlin/com/vk/admstorm/ssh/EnterPasswordDialog.kt index e178d530..c9630733 100644 --- a/src/main/kotlin/com/vk/admstorm/ssh/EnterPasswordDialog.kt +++ b/src/main/kotlin/com/vk/admstorm/ssh/EnterPasswordDialog.kt @@ -2,6 +2,7 @@ package com.vk.admstorm.ssh import com.intellij.openapi.project.Project import com.intellij.openapi.ui.DialogWrapper +import com.intellij.ui.JBColor import com.intellij.ui.components.JBCheckBox import com.intellij.ui.components.JBPasswordField import com.intellij.ui.dsl.builder.AlignX @@ -9,7 +10,10 @@ import com.intellij.ui.dsl.builder.BottomGap import com.intellij.ui.dsl.builder.TopGap import com.intellij.ui.dsl.builder.panel import com.intellij.util.ui.JBDimension +import java.awt.event.KeyAdapter +import java.awt.event.KeyEvent import javax.swing.JComponent +import javax.swing.JLabel import javax.swing.JPanel class EnterPasswordDialog(project: Project) : DialogWrapper(project, true, IdeModalityType.PROJECT) { @@ -31,10 +35,23 @@ class EnterPasswordDialog(project: Project) : DialogWrapper(project, true, IdeMo fun getPassword() = String(myPasswordInput.password) fun isRemember() = myRememberCheckBox.isSelected + private val warningLabel = JLabel().apply { foreground = JBColor.RED } + init { title = "Enter Password" init() + + myPasswordInput.addKeyListener(object : KeyAdapter() { + override fun keyTyped(e: KeyEvent) { + val char = e.keyChar + if (!char.isLetterOrDigit() || char in 'А'..'я') { + warningLabel.text = "Password should contain only English characters and numbers!" + } else { + warningLabel.text = "" + } + } + }) } override fun getPreferredFocusedComponent() = myPasswordInput @@ -57,6 +74,11 @@ class EnterPasswordDialog(project: Project) : DialogWrapper(project, true, IdeMo cell(myPasswordInput) .align(AlignX.FILL) }.bottomGap(BottomGap.NONE) + + row{ + cell(warningLabel) + }.bottomGap(BottomGap.NONE) + }.apply { preferredSize = JBDimension(300, -1) }