Skip to Content
Menu
This question has been flagged
2 Replies
4810 Rodiniai

How to send an email to the account owner (with information about logging time) after logging in to his account (security reason)?

Portretas
Atmesti
Best Answer

Hello, 

In order to solve this purpose you should probably do following steps,

1. Go to /openerp/addons/base/res/res_users.py file and you will find following method.

 def authenticate( self, db, login, password, user_agent_env ):

this method calls every time when anyone tries to logged in. It returns the "uid" of the person who logged in, in case of only if that user has successfully been able to authenticate.

2. You can inherit this method into your custom class and if super method returns the uid then you can write like following code. 

def authenticate( self, db, login, password, user_agent_env ): 
uid = super(res_users,self).authenticate(db,login,password,user_agent_env)
if uid :
user_obj = self.pool['res.users'].browse(self.pool.cursor(),uid,[uid])
self.pool['res.partner'].message_post(self.pool.cursor(), uid, [user_obj.partner_id.id], body='You have successfully logged in', context={},partner_ids=[user_obj.partner_id.id])
return uid

I wrote this answer in hurry so there may be some problem on syntax. But I am sure that you are able to got the logic.

I hope this answer will help you,

Portretas
Atmesti
Autorius Best Answer

Thank you so much for a good suggestion. The solution required some modifications: use the superuser to send message and closing the cursor at end.

The final solution:

    @api.v7
def authenticate( self, db, login, password, user_agent_env ):
uid = super(res_users,self).authenticate(db,login,password,user_agent_env)
cr = self.pool.cursor()
if uid :
user_obj = self.pool['res.users'].browse(cr,SUPERUSER_ID,[uid])
self.pool['res.partner'].message_post(cr, SUPERUSER_ID, [user_obj.partner_id.id], body=_('You have successfully logged in'), context={},partner_ids=[user_obj.partner_id.id])
else:
ids = self.pool['res.users'].search(cr,SUPERUSER_ID,[('login','=',login)])
if ids:
user_obj = self.pool['res.users'].browse(cr,SUPERUSER_ID,[ids[0]])
self.pool['res.partner'].message_post(cr, SUPERUSER_ID, [user_obj.partner_id.id], body=_('Invalid attempt to login to your account with the password: %s') % password, context={},partner_ids=[user_obj.partner_id.id])
cr.close()
return uid





Portretas
Atmesti

@zbik, I already told that i was in hurry and don't have time to write exact code. I just tried to give you the logic. However from your karma profile, you are capable enough to complete your purpose with shaping of my way into proper manner.

Related Posts Replies Rodiniai Veikla
1
liep. 25
877
5
geg. 25
18300
0
bal. 25
1160
1
bal. 25
1604
0
kov. 25
1445