Having the default user() functions is all you need. I'd try commenting out your 'user' functions.
-Jim On Wednesday, October 24, 2018 at 10:59:45 PM UTC-5, Rahul wrote: > > Yes this is in default.py. Please excuse me for my bad code as I am still > experimenting with Auth and not totally familiar with the implementation. > Is this the right way that I am doing it? or only having user() function is > enough ? > > Thanks, Rahul > > On Wednesday, October 24, 2018 at 9:45:21 PM UTC+5:30, Jim S wrote: >> >> I'm confused. Is this code in your controller somewhere? >> >> # ---- User functions --- >> def login(): return dict(form=auth.login()) >> def register(): return dict(form=auth.register()) >> def retrieve_password(): return dict(form=auth.reset_password()) >> def logout(): return dict(form=auth.logout()) >> def profile(): return dict(form=auth.profile()) >> >> You shouldn't need it. To override the default login stuff I've just >> modified the one in default.py. >> >> -Jim >> >> >> >> On Tuesday, October 23, 2018 at 11:26:45 PM UTC-5, Rahul wrote: >>> >>> The user function remains as-is - No modifications done. >>> >>> def user(): >>> """ >>> exposes: >>> http://..../[app]/default/user/login >>> http://..../[app]/default/user/logout >>> http://..../[app]/default/user/register >>> http://..../[app]/default/user/profile >>> http://..../[app]/default/user/retrieve_password >>> http://..../[app]/default/user/change_password >>> http://..../[app]/default/user/bulk_register >>> use @auth.requires_login() >>> @auth.requires_membership('group name') >>> @auth.requires_permission('read','table name',record_id) >>> to decorate functions that need access control >>> also notice there is http://..../[app]/appadmin/manage/auth to allow >>> administrator to manage users >>> """ >>> return dict(form=auth()) >>> >>> I am using the specified functions to expose methods as below - >>> # ---- User functions --- >>> def login(): return dict(form=auth.login()) >>> def register(): return dict(form=auth.register()) >>> def retrieve_password(): return dict(form=auth.reset_password()) >>> def logout(): return dict(form=auth.logout()) >>> def profile(): return dict(form=auth.profile()) >>> >>> >>> >>> and the corresponding files reside in \views\ *not in* \views\default >>> - I am not sure if the application is even picking up these files. >>> >>> Note - I have extended the Auth (auth_user) table and added workspace >>> and other fields - This will be specified everytime I add a new user. I >>> would filter out the results as you mentioned but only after all the login >>> stuff works properly. >>> >>> auth.settings.extra_fields['auth_user'] = [ >>> Field ('workspace', length=128), >>> >>> Sincerely, >>> >>> Rahul >>> >>> On Tuesday, October 23, 2018 at 7:49:48 PM UTC+5:30, Jim S wrote: >>>> >>>> Did you modify the user() function in default.py? Or, are you using >>>> your own custom login functions? >>>> >>>> -Jim >>>> >>>> On Tuesday, October 23, 2018 at 7:59:21 AM UTC-5, Rahul wrote: >>>>> >>>>> Hi Jim, All, >>>>> Okay I tried this - And I also decorated index() function in >>>>> controller like below as I want to redirect the user to login page rather >>>>> than directly jumping to index.html >>>>> >>>>> # ---- example index page ---- >>>>> @auth.requires_login() >>>>> def index(): >>>>> response.flash= T("Hello World") >>>>> return dict(message=T('Welcome to web2py!')) >>>>> >>>>> However, now when I put the credentials username and password, it >>>>> doesnt log me in - I generates the below URL like below and appends it to >>>>> url box. What might I be missing because it was logging me in fine >>>>> sometime >>>>> ago but now it doesnt allow. Note I did cleanup a lot of HTML code from >>>>> my >>>>> login page. There sure is something going on here that I am not catching >>>>> - >>>>> >>>>> >>>>> >>>>> http:// >>>>> 127.0.0.1:8000/scaffolding_app/default/user/login?username=rahul&password=integer10&_next=%2Fscaffolding_ace_admin%2Fdefault%2Findex&_formkey=0c0c022a-377d-47dd-bd72-a13e8ee6f387&_formname=login >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Sincerely, Rahul D. >>>>> >>>>> >>>>> On Friday, October 19, 2018 at 12:24:19 PM UTC+5:30, Rahul wrote: >>>>>> >>>>>> Hi Jim, >>>>>> That makes sense. I will check it out on which option to go. >>>>>> Thanks! for all the guidance. >>>>>> >>>>>> Thank you, >>>>>> >>>>>> *Rahul Dhakate* >>>>>> >>>>>> On Wednesday, October 17, 2018 at 7:57:32 PM UTC+5:30, Jim S wrote: >>>>>>> >>>>>>> Rahul >>>>>>> >>>>>>> First, what I was referring to was common_filters, not common >>>>>>> fields. Here is the scenario as I see it. >>>>>>> >>>>>>> In you auth_user table you have a workspace field. Then in other >>>>>>> tables that are workspace-specific you also have a workspace field to >>>>>>> show >>>>>>> which workspace they relate to >>>>>>> >>>>>>> Here is how I think I would handle it, assuming I am understanding >>>>>>> your need. And, assuming that the workspace identifier is stored on >>>>>>> the >>>>>>> user record. You wouldn't gather it on the login page. >>>>>>> >>>>>>> In db.py I'd have code that would check to see if the user is logged >>>>>>> in. If so, then set the common filters for the workspace-specific >>>>>>> tables >>>>>>> >>>>>>> if auth.is_logged_in: >>>>>>>> db.related_table_1._common_filter = lambda query: >>>>>>>> db.related_table_1.workspace = auth.user.workspace >>>>>>>> db.related_table_2._common_filter = lambda query: >>>>>>>> db.related_table_2.workspace = auth.user.workspace >>>>>>>> db.related_table_3._common_filter = lambda query: >>>>>>>> db.related_table_3.workspace = auth.user.workspace >>>>>>>> db.related_table_4._common_filter = lambda query: >>>>>>>> db.related_table_4.workspace = auth.user.workspace >>>>>>>> ...etc... >>>>>>> >>>>>>> >>>>>>> Make sense? >>>>>>> >>>>>>> Anyone else out there that's done this and can show a better way? >>>>>>> >>>>>>> -Jim >>>>>>> >>>>>>> >>>>>>> NOTE - you might also skip the common filters if you're logging in >>>>>>> as an admin. Then you might want to see data for all workspaces >>>>>>> >>>>>>> NOTE 2 - If you really want people to specify their workspace when >>>>>>> they login (meaning they have access to all of them but they choose >>>>>>> which >>>>>>> one on login) then you'd have to override the default login code to >>>>>>> gather >>>>>>> that extra variable and store it in your session somewhere. Then use >>>>>>> that >>>>>>> instead of auth.user.workspace when building your filters. >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Wed, Oct 17, 2018 at 2:06 AM Rahul <rahul....@gmail.com> wrote: >>>>>>> >>>>>>>> Hi Jim, >>>>>>>> I am afraid no I didn't check that section but I just >>>>>>>> finished reading it. Thanks! for directing me to it. Looks like a new >>>>>>>> addition to DAL (might be a couple of versions back) & looks >>>>>>>> promising. So >>>>>>>> now, we can specify something like request_tenant using >>>>>>>> db._common_fields >>>>>>>> field parameter. >>>>>>>> >>>>>>>> I would need it for all tables so is there a specific syntax like >>>>>>>> below that I am required to specify in each table I create ? >>>>>>>> >>>>>>>> db._common_fields.append(Field('request_tenant', >>>>>>>> default=request.env.http_host, >>>>>>>> writable=False)) >>>>>>>> >>>>>>>> >>>>>>>> Also, can we set the default value to a field value that we can >>>>>>>> query or pass as a session variable like session.workspace == 'some >>>>>>>> workspace name' while the user logs in ? >>>>>>>> >>>>>>>> default=session.workspace, >>>>>>>> >>>>>>>> >>>>>>>> If yes - what do I need to modify to add this additional field in >>>>>>>> Auth so it will be an input field for the user to key in the workspace >>>>>>>> name. Then I can store this workspace in session variable and use it. >>>>>>>> The >>>>>>>> reason is I want a group of users (accessing the same app and database >>>>>>>> from >>>>>>>> different locations) belonging to same workspace. This is how they >>>>>>>> are >>>>>>>> grouped. please see the screenshot posted from my actual application >>>>>>>> login. >>>>>>>> In it I use workspace name as well to validate but after reading the >>>>>>>> book >>>>>>>> seems like we would not require workspace for validation if we can >>>>>>>> have the >>>>>>>> user provide the field for redirection and for us to grab the session >>>>>>>> variable. >>>>>>>> >>>>>>>> Or is this not needed at all after we use common fields ? >>>>>>>> >>>>>>>> I hope I am clear and make sense :-) >>>>>>>> >>>>>>>> Regards, >>>>>>>> >>>>>>>> Rahul >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Tuesday, October 16, 2018 at 7:49:49 PM UTC+5:30, Jim S wrote: >>>>>>>>> >>>>>>>>> Have you looked at common filters? >>>>>>>>> >>>>>>>>> >>>>>>>>> http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer?search=common+filter#Common-filters >>>>>>>>> >>>>>>>>> -Jim >>>>>>>>> >>>>>>>>> On Tuesday, October 16, 2018 at 7:35:04 AM UTC-5, Rahul wrote: >>>>>>>>>> >>>>>>>>>> Hey Everyone, >>>>>>>>>> Greetings! I have a question. I went through Auth >>>>>>>>>> documentation and understood that we can add extra fields to the >>>>>>>>>> Auth >>>>>>>>>> tables. However, I still want to be a little more clear to achieve >>>>>>>>>> below - >>>>>>>>>> I am currently using three fields for a multi-tenant system like >>>>>>>>>> workspace, >>>>>>>>>> username and password. Here workspace depicts where the user belongs >>>>>>>>>> to >>>>>>>>>> (see explanation in Q1 below) I am currently using my own code to >>>>>>>>>> manage >>>>>>>>>> this stuff manually (almost everything that auth does), now though I >>>>>>>>>> want >>>>>>>>>> to give Auth a try and tailor it to fit my needs. I dont want to >>>>>>>>>> maintain >>>>>>>>>> that amount of code and use the existing API. Can I get help on >>>>>>>>>> achieving >>>>>>>>>> that in the simplest way. If it works, I would switch to using Auth >>>>>>>>>> >>>>>>>>>> * Q1]* How can we use Auth to add one more extra field for >>>>>>>>>> authentication when I want a system to validate login based on three >>>>>>>>>> parameters like - Validation needs to be done based on all three >>>>>>>>>> parameters >>>>>>>>>> specified. For each application I can use 'n' number of unique >>>>>>>>>> workspaces >>>>>>>>>> and 'n' number of users would belong to these workspaces. How to do >>>>>>>>>> this ? >>>>>>>>>> >>>>>>>>>> 1. *workspace *- An alpha numeric field that would store a >>>>>>>>>> unique name denoting users belonging to a particular set (For >>>>>>>>>> example >>>>>>>>>> users working in a specific location like los-angeles or >>>>>>>>>> washington) or >>>>>>>>>> an office location like michigan, nevada or Zones like north, >>>>>>>>>> south .. >>>>>>>>>> sort-of etc. ) >>>>>>>>>> 2. *username *- Its available already >>>>>>>>>> 3. *password *- Its available already >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> *Q2]* Which all tables need to be modified ? >>>>>>>>>> >>>>>>>>>> *Q3] *Any changes in any other code in any files ? >>>>>>>>>> >>>>>>>>>> I know I can clone my app multiple times and support >>>>>>>>>> multi-tenancy however, if this can be achieved with Auth - that >>>>>>>>>> would be >>>>>>>>>> great. >>>>>>>>>> >>>>>>>>>> Regards, >>>>>>>>>> >>>>>>>>>> *Rahul * >>>>>>>>>> >>>>>>>>> -- >>>>>>>> Resources: >>>>>>>> - http://web2py.com >>>>>>>> - http://web2py.com/book (Documentation) >>>>>>>> - http://github.com/web2py/web2py (Source code) >>>>>>>> - https://code.google.com/p/web2py/issues/list (Report Issues) >>>>>>>> --- >>>>>>>> You received this message because you are subscribed to a topic in >>>>>>>> the Google Groups "web2py-users" group. >>>>>>>> To unsubscribe from this topic, visit >>>>>>>> https://groups.google.com/d/topic/web2py/6SscBvMorU0/unsubscribe. >>>>>>>> To unsubscribe from this group and all its topics, send an email to >>>>>>>> web2py+un...@googlegroups.com. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.