Hi Dave and Jim,
           Please find the files in the zipped archive. I have added 
default.py, db.py, index.html and also layout file which I am converting to 
use with web2py. called ace.html. I have also attached the views\login.html 
file since I am extending this file  specifically for login form as it is 
different than layout file. Let me know. Thanks!


Regards,

Rahul 

On Friday, October 26, 2018 at 5:11:12 PM UTC+5:30, Jim S wrote:
>
> Can you show the entire db.py, default py and index.html?
>
> Jim
>
>
> On Fri, Oct 26, 2018, 1:44 AM Rahul <rahul....@gmail.com <javascript:>> 
> wrote:
>
>> 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 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 <javascript:>.
>> 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.

<<attachment: files.zip>>

Title: Login Page - Application Name

Reply via email to