Skip ke Konten
Menu
Pertanyaan ini telah diberikan tanda
2 Replies
4767 Tampilan

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

Avatar
Buang
Jawaban Terbai

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,

Avatar
Buang
Penulis Jawaban Terbai

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





Avatar
Buang

@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.

Post Terkait Replies Tampilan Aktivitas
1
Jul 25
750
5
Mei 25
18174
0
Apr 25
1065
1
Apr 25
1553
0
Mar 25
1425