# Ignition - Prompt for password on action, but don't log in

**URL:** <https://forum.inductiveautomation.com/t/ignition-prompt-for-password-on-action-but-dont-log-in/31319>\
**Category:** Ignition\
**Tags:** security, ignition80, vision\
**Created:** [January 15, 2020, 10:54pm UTC](https://forum.inductiveautomation.com/t/ignition-prompt-for-password-on-action-but-dont-log-in/31319 "2020-01-15T22:54:48Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![sahil.jain](https://avatars.discourse-cdn.com/v4/letter/s/8e8cbc/32.png) [@sahil.jain](https://forum.inductiveautomation.com/u/sahil.jain)\
**Post date:** [January 15, 2020, 10:54pm UTC](https://forum.inductiveautomation.com/t/ignition-prompt-for-password-on-action-but-dont-log-in/31319/1 "2020-01-15T22:54:48Z")

</div>

Hello, I am trying to implement a system where certain actions require a password entry. The intent is to force the user to enter a password every time certain actions are requested, as a form of confirmation.

Is it possible to hook into the security system or confirmation dialog, such that I can automatically bring up a custom window which does the security validation and performs the action, the way that the default confirmation window does?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [January 15, 2020, 11:20pm UTC](https://forum.inductiveautomation.com/t/ignition-prompt-for-password-on-action-but-dont-log-in/31319/2 "2020-01-15T23:20:57Z")

</div>

Make your own popup window with a password field, then assemble the current username (from the system/client tag, or the system function) and pass it to [`system.security.validateUser`](https://docs.inductiveautomation.com/display/DOC80/system.security.validateUser) - if it returns `True`, then you know the password was correct, and can continue your logic.

---

<div class="post-metadata">

**Author:** ![witman](https://avatars.discourse-cdn.com/v4/letter/w/d2c977/32.png) [@witman](https://forum.inductiveautomation.com/u/witman)\
**Post date:** [January 15, 2020, 11:56pm UTC](https://forum.inductiveautomation.com/t/ignition-prompt-for-password-on-action-but-dont-log-in/31319/3 "2020-01-15T23:56:01Z")

</div>

What @paul-griffith said. And if you also need to check roles, you can do both at once with [system.security.getUserRoles](https://docs.inductiveautomation.com/display/DOC80/system.security.getUserRoles). Something like:

```python
reqRole = 'Role user must have'
currentUser = system.security.getUsername()
username = usernameField.text
password = passwordField.text
roles = system.security.getUserRoles(username, password)
if roles == None:
	# Respond to failed validation.
elif reqRole in roles:
	# Respond to successful validation with required role.
	pass
	# Login validated user if credentials don't match current user.
	if username.lower() != currentUser.lower():
		# Login user.
		system.security.switchUser(username, password)
else:
	# Respond to successful validation without required role.

```

---

<div class="post-metadata">

**Author:** ![sahil.jain](https://avatars.discourse-cdn.com/v4/letter/s/8e8cbc/32.png) [@sahil.jain](https://forum.inductiveautomation.com/u/sahil.jain)\
**Post date:** [January 16, 2020, 12:06am UTC](https://forum.inductiveautomation.com/t/ignition-prompt-for-password-on-action-but-dont-log-in/31319/4 "2020-01-16T00:06:37Z")

</div>

Thanks for your response. How would this work for e.g. a multistate button. I did not have luck using the propertyChange event (I couldn’t stop the ControlValue change)

I assume from your response it’s not possible to override the default confirmation window?

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [January 16, 2020, 1:19pm UTC](https://forum.inductiveautomation.com/t/ignition-prompt-for-password-on-action-but-dont-log-in/31319/5 "2020-01-16T13:19:15Z")

</div>

Add a custom property to use in place of the Control Value. My example uses ‘WriteValue’ as the custom property.

In the propertyChange Event:

```python
if event.propertyName == 'controlValue' and event.newValue != event.source.WriteValue:
	
	currentUser = system.security.getUsername()
	password = system.gui.passwordBox("Confirm Password")
	valid = system.security.validateUser(currentUser, password)
		
	if valid:
		event.source.WriteValue = event.newValue
	else:
		event.source.controlValue = event.source.WriteValue
		system.gui.errorBox("Incorrect password")

```

Window attached.  
[Multistate\_Password\_2020-01-16\_0816.zip](https://us1.discourse-cdn.com/inductiveautomation/original/2X/a/aa7290dd7d2b9482fedadec04c46fba506b82daf.zip) (4.9 KB)

---

<div class="post-metadata">

**Author:** ![sahil.jain](https://avatars.discourse-cdn.com/v4/letter/s/8e8cbc/32.png) [@sahil.jain](https://forum.inductiveautomation.com/u/sahil.jain)\
**Post date:** [January 16, 2020, 9:46pm UTC](https://forum.inductiveautomation.com/t/ignition-prompt-for-password-on-action-but-dont-log-in/31319/6 "2020-01-16T21:46:32Z")

</div>

> [@JordanCClark](#):
>
> if event.propertyName == 'controlValue' and event.newValue != event.source.WriteValue: currentUser = system.security.getUsername() password = system.gui.passwordBox("Confirm Password") valid = system.security.validateUser(currentUser, password) if valid: event.source.WriteValue = event.newValue else: event.source.controlValue = event.source.WriteValue system.gui.errorBox("Incorrect password")

Thank you for your help!
