This question has been flagged
3 Replies
7307 Views

Hello Guys. I'm trying to logout out by using this url:
​http://localhost:8069/web/session/logout?sp=Odoo+Dev+TEST&tenantDomain=carbon.super​

Someone know how can I logout by using that string? Because i'm doing an integration by using ws2o, but there is no way to redirect by using other logout url, it must be that one and when I try to use that url, I receive the fallowing error:

test_auth werkzeug: Error on request:
Traceback (most recent call last):
File "/home/lliege/odoo/odoo12/odoo12-env/lib/python3.6/site-packages/werkzeug/serving.py", line 304, in run_wsgi
execute(self.server.app)
File "/home/lliege/odoo/odoo12/odoo12-env/lib/python3.6/site-packages/werkzeug/serving.py", line 292, in execute
application_iter = app(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/service/server.py", line 409, in app
return self.app(e, s)
File "/home/lliege/odoo/odoo12/odoo/odoo/service/wsgi_server.py", line 128, in application
return application_unproxied(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/service/wsgi_server.py", line 117, in application_unproxied
result = odoo.http.root(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 1320, in __call__
return self.dispatch(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 1293, in __call__
return self.app(environ, start_wrapped)
File "/home/lliege/odoo/odoo12/odoo12-env/lib/python3.6/site-packages/werkzeug/middleware/shared_data.py", line 220, in __call__
return self.app(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 1488, in dispatch
result = ir_http._dispatch()
File "/home/lliege/odoo/odoo12/odoo/addons/auth_signup/models/ir_http.py", line 19, in _dispatch
return super(Http, cls)._dispatch()
File "/home/lliege/odoo/odoo12/odoo/addons/web_editor/models/ir_http.py", line 22, in _dispatch
return super(IrHttp, cls)._dispatch()
File "/home/lliege/odoo/odoo12/odoo/addons/http_routing/models/ir_http.py", line 397, in _dispatch
result = super(IrHttp, cls)._dispatch()
File "/home/lliege/odoo/odoo12/odoo/addons/utm/models/ir_http.py", line 26, in _dispatch
response = super(IrHttp, cls)._dispatch()
File "/home/lliege/odoo/odoo12/odoo/odoo/addons/base/models/ir_http.py", line 207, in _dispatch
return cls._handle_exception(e)
File "/home/lliege/odoo/odoo12/odoo/addons/utm/models/ir_http.py", line 31, in _handle_exception
response = super(IrHttp, cls)._handle_exception(exc)
File "/home/lliege/odoo/odoo12/odoo/odoo/addons/base/models/ir_http.py", line 177, in _handle_exception
return request._handle_exception(exception)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 776, in _handle_exception
return super(HttpRequest, self)._handle_exception(exception)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 314, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/home/lliege/odoo/odoo12/odoo/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/home/lliege/odoo/odoo12/odoo/odoo/addons/base/models/ir_http.py", line 203, in _dispatch
result = request.dispatch()
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 835, in dispatch
r = self._call_function(**self.params)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 346, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/lliege/odoo/odoo12/odoo/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 941, in __call__
return self.method(*args, **kw)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 519, in response_wrap
response = f(*args, **kw)
TypeError: logout() got an unexpected keyword argument 'sp' - - -

Avatar
Discard
Author Best Answer

I found a way to bypass those parameters by just adding undefined number of parameters on logout function.

On addons/web/controllers, just add **kwargs on def:

@http.route('/web/session/logout', type='http', auth="none")    

def logout(self, redirect='/web', **kwargs):        

request.session.logout(keep_db=True)        

return werkzeug.utils.redirect(redirect, 303)

Or you can just overwrite the function with 

import odoo.addons.web.controllers.main as mainclass 
Home2(main.Home):
@http.route('/test', type="http", auth="none")
def index(self):
return "<div>This is my new home page.</div>"
Avatar
Discard
Best Answer

Hi Rafael,

You can directly logout by using following url

http://localhost:8069/web/session/logout

Thanks.


Avatar
Discard
Author

I said I need to use this URL specifically: ​http://localhost:8069/web/session/logout?sp=Odoo+Dev+TEST&tenantDomain=carbon.super​

It must be that url because of the wso2 integration!