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.

Reply via email to