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 <[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.