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.