Nope - doesnt help. I commented out all the user functions defined in the controller and
# ---- 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()) ''' I even decorated index - It does take me to the login screen but from there nothing happens. It just wont log me in like it did before. Also, I have two users in database but none work now. Again, register seems to fail (It did work earlier) but now it doesnt. See screenshot of both screens. Looks like I must be really doing something weird. If this wont work by this Sunday. I may go back to my old style of coding and do it all by myself. I've seriously lost 10 days reading and experimenting with Auth to make it work . Not too much coded. @auth.requires_login() def index(): response.flash = T("Hello User") #redirect(URL(r=request, c='default/user', f='login')) # Redirects user to login page return dict(message=T('Welcome to web2py!')) Thanks, Rahul On Thursday, October 25, 2018 at 6:02:45 PM UTC+5:30, Jim S wrote: > > 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.