Ngomongin Uang : Menjadi ‘Kaya’ Versi Kamu SendiriKekayaan sering kali bukan hanya soal uang atau status sosial. Kekayaan yang sesungguhnya bersifat sangat personal, karena setiap orang mendefinisikan kesuksesan dan kebahagiaannya dengan cara yang berbeda. Namun, apa pun definisi kekayaan bagi kamu, UANG adalah alat ukur dan kendaraan yang bisa membawamu mencapai tujuan. Karena itulah, memahami keuangan adalah hal yang fundamental dalam membangun kehidupan terbaik versi kamu. Free Klik Disini ! |
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: