Перейти к содержимому
Меню
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Этот вопрос был отмечен
2 Ответы
4760 Представления

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

Аватар
Отменить
Лучший ответ

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,

Аватар
Отменить
Автор Лучший ответ

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





Аватар
Отменить

@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 Ответы Просмотры Активность
1
июл. 25
741
5
мая 25
18167
0
апр. 25
1062
1
апр. 25
1553
0
мар. 25
1418