Pada tutorial sebelumnya kita telah membuat API untuk register user, di bagian yang ke-2 ini kita akan membuat validasi password dan juga link aktivasi user.
Pastikan sebelum mengikuti tutorial ini Anda telah mengikuti tutorial sebelumnya tentang service user login dan juga CRUD service produk.
Dibagian yang kedua ini kita akan membuat fungsi untuk keamanan password, password yang user input perlu mengandung spesial karakter.
Selain password validator, kita juga perlu membuat fungsi untuk mengirim email link aktivasi user, di link aktivasi user ini Anda perlu membuat url expired untuk waktu tertentu.
Berikut ini beberapa hal yang akan kita pelajari dibagian ke-2 dari service register user :
flag = 0
common_msg = "Password must contain at least 1 [a-z, A-Z, 0-9, _@$]"
msg = ""
if (len(password)<8):
flag = -1
msg = 'The password > 8 character'
break
elif not re.search("[a-z]", password):
flag = -1
msg = common_msg
break
elif not re.search("[A-Z]", password):
flag = -1
msg = common_msg
break
elif not re.search("[0-9]", password):
flag = -1
msg = common_msg
break
elif not re.search("[_@$]", password):
flag = -1
msg = common_msg
break
else:
flag = 0
msg = 'Valid password'
break
{
'user_id': 'integer',
'created_time': 'datetime.now()',
'expired_time': 'timestamp(datetime.now() + (15 * 60))'
}
Encode payload diatas dengan token generator.
Berikut ini contoh fungsi forward email menggunakan mailgun:
def forward_email(data):
try:
requests.post(
"https://api.mailgun.net/v3/{domain-name}/messages",
auth=("api", "{mail-gun-api-key}"),
data={"from": "{email-from}",
"to": ["{}".format(data['email'])],
"subject": "Registration Activation Link",
"text": "Click the following link or copy paste on web browser to activate the account : <a href='{}'></a>".format(data['link_url'])})
except Exception as e:
print(str(e))
def activate_account_user(token):
try:
data = jwtDecode(token)
user = User.objects.get(email=data['email'])
user.is_active = True
user.save()
except Exception as e:
return False, str(e)
return True, 'success'
Di fungsi ini kita akan men-decode token yang dikirim oleh user dan memverifikasinya, jika valid maka aktivasi user akan sukses dan user sudah bisa login ke sistem kita.
Berikut contoh unit test:
class CreateNewUserTestCase(TestCase):
data = {
"email":"user@example.com",
"password":"password@1223G",
"full_name":"Test By Johan"
}
def test_create_register_user_success(self):
resp = create_register_user(self.data)
self.assertEqual(resp['status'], "00")
Dari skenario pengujian tersebut developer bisa memastikan bahwa logika yang dibuat sudah sesuai ekspektasi atau belum
Github: https://github.com/halovina/hvsuserservice/tree/register-user-bagian-2
Baca artikel lainya: