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 <[email protected]> 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 >>>>>> [email protected]. >>>>>> 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 [email protected]. For more options, visit https://groups.google.com/d/optout.

