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 [email protected]: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 [email protected]: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>
--