This is an example from book, where authentication and posting into 
database work good on a local server. 

Once I moved the code to production redhat linux server, where we have 
routes.py as bellow all I get as result is a login redirect:
You are being redirected <a href=
"/user/login?_next=/webservices/api/customer.json%3FFirstName%3DTim5%26LastName%3DJson"
>here</a>

If I remove authentication (@auth.requires_login() and 
@auth.requires_permission('insert customer through webservice')) on 
production server, records are inserted properly. 

Tried adding default and webservices controllers into application specific 
routes.py, but it didn't help.

Any suggestions what should I do? 

Thanks,
Adnan

tried in both, default.py and webservices.py controllers:

auth.settings.allow_basic_login = True
@auth.requires_login()
@auth.requires_permission('insert customer through webservice')
@request.restful()
def api():
    response.view = 'generic.'+request.extension
    
    def GET(*args,**vars):
        patterns = [
            "/members[customer]",
            "/member_fn/{customer.FirstName.startswith}",
            "/member_ln/{customer.LastName.startswith}",
            "/member/{customer.FirstName}/:field",
            
"/member/{customer.FirstName}/orders[customer_order.customer_id]",
            
"/member/{customer.FirstName}/order[customer_order.customer_id]/{customer_order.id}"
,
            
"/member/{customer.FirstName}/order[customer_order.customer_id]/{customer_order.id}/:field"
            ]
        parser = db.parse_as_rest(patterns,args,vars)
        if parser.status == 200:
            return dict(content=parser.response)
        else:
            raise HTTP(parser.status,parser.error)
    def POST(table_name,**vars):
        if table_name == 'customer':
            return db.customer.validate_and_insert(**vars)
        elif table_name == 'customer_order':
            return db.customer_order.validate_and_insert(**vars)
        else:
            raise HTTP(400)
    return locals()





web2py folder: routes.py
routers = dict(
    # base router
    BASE = dict(
        default_application = 'welcome', domains = {'crm.domain.com': 'crm' 
}
    ),
)



crm app folder: routes.py (deleted)


Terminal test:


asm21:~ adnan$ curl --user webserv...@domain.com:pass -d 
"FirstName=Tim5&LastName=Json" http://crm.domain.com/api/customer.json
Result: You are being redirected <a href=
"/user/login?_next=/api/customer.json%3FFirstName%3DTim5%26LastName%3DJson">
here</a>

asm21:~ adnan$ curl --user webserv...@domain.com:pass -d 
"FirstName=Tim5&LastName=Json" http://crm.domain.com/webservices/api/
customer.json
Result: You are being redirected <a href=
"/user/login?_next=/webservices/api/customer.json%3FFirstName%3DTim5%26LastName%3DJson"
>here</a>




-- 



Reply via email to