Odoo Help

0

How to send an email after login?

By
Zbik
on 10/24/15, 7:43 AM 951 views

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

1

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,

0
Zbik
On 10/26/15, 6:51 AM

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.

Emipro Technologies Pvt. Ltd.
on 10/26/15, 10:03 AM

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

Register

Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)

Stats

Asked: 10/24/15, 7:43 AM
Seen: 951 times
Last updated: 10/26/15, 6:57 AM