Hello All,
How I can generate a list/report of currently logged-in users in the ERP system? It would be advantageous if an admin user can forcefully log-out an idol user or kill a session.
Thanks
Hello All,
How I can generate a list/report of currently logged-in users in the ERP system? It would be advantageous if an admin user can forcefully log-out an idol user or kill a session.
Thanks
You can set a session time out , this will be a global rule , under system settings>security.
Thanks @msalim79 for the reply.
Actually, it is a global setting. It is definitely helpful. But my requirement is slightly different. I want 2 things: 1) To check how many users are currently logged-in and 2) forcefully log-out or kill a session in an ad-hoc manner. This means it should be need-based. It is up to an admin that the session should be killed or not.
Setting a global session time out would create inconvenience to the regular and routine users.
Out of the box i dont see anything , you would then need to build and customise your needs.
I have found out a solution for the requirement posted.
There is a table in ERPNext DB named ‘tabSessions’ where in one can find out - user, ipaddress, lastupdate, device, status, and sessiondata - columns. By that one can get to know who are currently logged-in in the system. One can build a custom report and produce the requisite data.
Thanks
Command: uptime
Will show you how many users in
@TheCoder1. It shows the number of users logged to the server thru the terminal. They are not actual application logged-in users.
did you actually implement the report?
do you mind sharing it?
Sure @moe01325. Please find following python code. You add a script report using Administrator login and use the code following code and just copy paste it in a python file inside the report directory.
from future import unicode_literals
import frappe
from frappe import _def execute(filters=None):
columns, data = ,
columns = get_columns(filters)
data = get_result(filters)
return columns, datadef get_columns(filters):
columns = [
{
“label”: _(“User Name”),
“fieldname”: “Username”,
“fieldtype”: “Link”,
“options”: “User”,
“width”: 150
},
{
“label”: _(“IP”),
“fieldname”: “ip”,
“fieldtype”: “Data”,
“width”: 120
},
{
“label”: _(“Last Update”),
“fieldname”: “LastUpdate”,
“fieldtype”: “Date”,
“width”: 130
},
{
“label”: _(“Device”),
“fieldname”: “device”,
“fieldtype”: “Data”,
“width”: 100
},
{
“label”: _(“Status”),
“fieldname”: “status”,
“fieldtype”: “Data”,
“width”: 100
}
]return columns
def get_result(filters):
query = """ SELECT user AS Username, REPLACE( REPLACE( substring_index(substring_index(sessiondata, 'session_ip', -1), ',', 1), ':',''), "\'", "") AS ip, lastupdate AS LastUpdate, device AS Device, status AS Status FROM tabSessions """ q_data = frappe.db.sql(query) data = [] for q in q_data: row = { "Username": q[0], "ip": q[1], "LastUpdate": q[2], "device": q[3], "status": q[4] } data.append(row) return data
Thanks a lot! I appreciate it!