# Extend User Properties

**URL:** <https://forum.inductiveautomation.com/t/extend-user-properties/96060>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [September 17, 2024, 1:29pm UTC](https://forum.inductiveautomation.com/t/extend-user-properties/96060 "2024-09-17T13:29:28Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Subin\_Adhikari](https://avatars.discourse-cdn.com/v4/letter/s/898d66/32.png) [@Subin\_Adhikari](https://forum.inductiveautomation.com/u/Subin_Adhikari)\
**Post date:** [September 17, 2024, 1:29pm UTC](https://forum.inductiveautomation.com/t/extend-user-properties/96060/1 "2024-09-17T13:29:28Z")

</div>

Gurus,

What's the best way to extend user and roles property ?

One of our clients need Active status on User ( Scheduling don't work in this case )

Being said that i can just trigger the "Lockout" for the user so that he cannot login or do any of the activities, but was wondering what's the best way to implement.

1. can we somehow extend the user management as a new module ?
2. If step 1 is not recommended, I think I have to create a login page check if the user is in "active" status (some db operation ) and then finally login ?

Regards

---

<div class="post-metadata">

**Author:** ![flexware](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/flexware/32/66243_2.png) [@flexware](https://forum.inductiveautomation.com/u/flexware)\
**Post date:** [September 17, 2024, 2:21pm UTC](https://forum.inductiveautomation.com/t/extend-user-properties/96060/2 "2024-09-17T14:21:13Z")

</div>

Hi Subin,

The first thing that comes to mind is to use the [Database User Source](https://www.docs.inductiveautomation.com/docs/8.1/platform/security/classic-authentication-strategy/database-authentication). This will give you a ton of flexibility - you can even create your own tables where the user information will be stored, and from there, you can have a `StatusID` column to another table, or a simple `IsActive` column to tell if this user is active.

Then, in your queries that you specify for the DB User Source, you can control the behavior you describe there. For instance, you can set the `authentication query` to something like

```sql
SELECT 
    * 
FROM dbo.User 
WHERE Username = ? 
    AND Password = ? 
    AND IsActive = 1

```

If you don't wish to create all of the tables required for user management, you can simply choose the `Automatic` mode and the appropriate tables will be created for you in the Database connection you specify. Then you can modify those queries once you get the table structure in place.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/b/9/b92af94c9408b3d060e3978efadca2050264b891.png)

---

<div class="post-metadata">

**Author:** ![Subin\_Adhikari](https://avatars.discourse-cdn.com/v4/letter/s/898d66/32.png) [@Subin\_Adhikari](https://forum.inductiveautomation.com/u/Subin_Adhikari)\
**Post date:** [September 18, 2024, 1:39pm UTC](https://forum.inductiveautomation.com/t/extend-user-properties/96060/3 "2024-09-18T13:39:02Z")

</div>

Thanks for the message @flexware and this sounds like a proper plan here(to modify the database user source) , but I am afraid if get the "Login failed. Please try again." generic message but instead I want to give user a proper message "account not activated, please contact administrator" , so for these scenarios i think its better to create a different login page. or is there any other routes you think of @flexware

Regards

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [September 18, 2024, 1:56pm UTC](https://forum.inductiveautomation.com/t/extend-user-properties/96060/4 "2024-09-18T13:56:40Z")

</div>

A generic message is **deliberate** , and **necessary** to avoid giving useful information to attackers. When login fails, it must **not** indicate **why**.
