summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-01-13 11:40:44 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-01-13 11:40:44 +0700
commit6fe453ed5da6cfda56f4af454dbedc00b97f0f9e (patch)
tree7d088c21df7a7ac74d896259aefa94d940920294
parent7460334ff51a0bb1d049730f3c3577bf262db59e (diff)
simplify authentication
-rw-r--r--indoteknik_api/controllers/api_v1/partner.py4
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py6
-rw-r--r--indoteknik_api/controllers/api_v1/user.py12
-rw-r--r--indoteknik_api/controllers/controller.py12
-rw-r--r--indoteknik_api/models/res_users.py1
-rwxr-xr-xindoteknik_custom/__manifest__.py1
6 files changed, 13 insertions, 23 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py
index 2d7d04e8..043a82b8 100644
--- a/indoteknik_api/controllers/api_v1/partner.py
+++ b/indoteknik_api/controllers/api_v1/partner.py
@@ -25,10 +25,6 @@ class Partner(controller.Controller):
'zip': ['required'],
})
- is_verified = self.verify_user_token(validate_request['query']['user_id'])
- if not is_verified:
- return self.response(code=401, description='Unauthorized')
-
if not validate_request['valid']:
return self.response(code=400, description=validate_request)
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index 5604a86c..a8c5bacc 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -10,12 +10,6 @@ class SaleOrder(controller.Controller):
def create_sale_order(self, **kw):
if not self.authenticate():
return self.response(code=401, description='Unauthorized')
-
- user_id = kw.get('user_id')
-
- is_verify = self.verify_user_token(user_id)
- if not is_verify:
- return self.response(code=401, description='Unauthorized')
product_pricelist_default_discount_id = request.env['ir.config_parameter'].get_param('product.pricelist.default_discount_id')
product_pricelist_default_discount_id = int(product_pricelist_default_discount_id)
diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py
index d71c30ea..ae04e0ff 100644
--- a/indoteknik_api/controllers/api_v1/user.py
+++ b/indoteknik_api/controllers/api_v1/user.py
@@ -109,11 +109,7 @@ class User(controller.Controller):
user = request.env['res.users'].search([('id', '=', id)], limit=1)
if not user:
- return self.response(code=400, description='User not found')
-
- is_verify = self.verify_user_token(id)
- if not is_verify:
- return self.response(code=401, description='Unauthorized')
+ return self.response(code=404, description='User not found')
allowed_field = ['name', 'phone', 'mobile', 'password']
for field in allowed_field:
@@ -131,15 +127,13 @@ class User(controller.Controller):
return self.response(code=401, description='Unauthorized')
id = kw.get('id')
- is_verify = self.verify_user_token(id)
- if not is_verify:
- return self.response(code=401, description='Unauthorized')
user = request.env['res.users'].search([('id', '=', id)], limit=1)
if not user:
return self.response(code=404, description='User not found')
- partners = [user.partner_id] + [x for x in user.child_ids]
+ partner_ids = [user.partner_id.id] + [x.id for x in user.child_ids]
+ partners = request.env['res.partner'].search([('id', 'in', partner_ids)], order='create_date DESC')
address = [request.env['res.users'].api_address_response(x) for x in partners]
return self.response(address)
diff --git a/indoteknik_api/controllers/controller.py b/indoteknik_api/controllers/controller.py
index 6cc26cbc..a08d9fa4 100644
--- a/indoteknik_api/controllers/controller.py
+++ b/indoteknik_api/controllers/controller.py
@@ -30,10 +30,13 @@ class Controller(http.Controller):
except:
authorization = None
token = request.env['ir.config_parameter'].sudo().get_param('rest_api_token') or ''
+ result = False
if authorization == token:
request.session.authenticate(config.get('db_name'), 'it@fixcomart.co.id', 'Fixcomart378')
- return True
- return False
+ result = True
+ if self.verify_user_token():
+ result = True
+ return result
def get_request_params(self, kw, queries):
result = {
@@ -115,11 +118,12 @@ class Controller(http.Controller):
def create_user_token(self, user):
return jwt.encode({'id': user.id}, self.jwt_secret_key)
- def verify_user_token(self, user_id):
+ def verify_user_token(self):
try:
token = request.httprequest.environ['HTTP_TOKEN']
user_token = jwt.decode(token, self.jwt_secret_key, algorithms=['HS256'])
- if int(user_id) != user_token['id']:
+ user = request.env['res.users'].search([('id', '=', user_token['id'])])
+ if not user:
return False
return True
except:
diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py
index 8eddc85e..e5b4bed6 100644
--- a/indoteknik_api/models/res_users.py
+++ b/indoteknik_api/models/res_users.py
@@ -20,6 +20,7 @@ class ResUsers(models.Model):
def api_address_response(self, user):
data = {
'id': user.id,
+ 'type': user.type,
'name': user.name,
'mobile': user.mobile,
'street': user.street,
diff --git a/indoteknik_custom/__manifest__.py b/indoteknik_custom/__manifest__.py
index 92fa895c..908e74df 100755
--- a/indoteknik_custom/__manifest__.py
+++ b/indoteknik_custom/__manifest__.py
@@ -15,6 +15,7 @@
'views/coupon_program.xml',
'views/delivery_order.xml',
'views/product_pricelist.xml',
+ 'views/res_partner.xml',
'views/product_pricelist_item.xml',
'views/product_public_category.xml',
'views/product_template.xml',