Membuat Service User Register Bagian 2 - Django

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Membuat Service User Register Bagian 2 - Django

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 :

1) Password Validator


Beberapa hal standar yang perlu ada di password yang kita buat :

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

2) Generate link aktivasi user


Buat sebuah link aktivasi, dan tambahkan parameter token di url yang kita buat, dengan payload berikut:

{
'user_id': 'integer',
'created_time': 'datetime.now()',
'expired_time': 'timestamp(datetime.now() + (15 * 60))'
}

Encode payload diatas dengan token generator.

3) Kirim email aktivasi user


Buat sebuah fungsi untuk mengirim email link aktivasi user, Anda bisa menggunakan email sender dari pihak ke-3 seperti google, mailgun dan juga yang lainya.

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))

4) Fungsi aktivasi user


Setelah user menerima link aktivasi, kemudian melakukan klik, link akan teredirect ke fungsi aktivasi user.

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.

5) Unit Test


Ini merupakan bagian penting sebelum service register user di uji oleh pihak lain, di sini kita perlu menguji service register user dengan berbagai skenario.

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

6) Life cycle test via postman


Diagian pengujian yang terakhir developer perlu mengujianya secara live melalui postman, dari sini developer akan mendapatkan gambaran real tentang life cycle service user register.

7) Video tutorial


Video:

Githubhttps://github.com/halovina/hvsuserservice/tree/register-user-bagian-2

Baca artikel lainya:


  1. Membuat service user login bagian 1 - Konfigurasi Database

  2. Membuat service user login bagian 2 - Serializer dan JWT

  3. Membuat CRUD service product bagian 1 - Models Product

  4. Membuat CRUD service product bagian 2 - Function Serializer

  5. Membuat CRUD service product bagian 3 - Api Client Service

  6. Membaut CRUD service product bagian 4 - Auth User

  7. Membuat CRUD service product bagian 5 - TDR File Log

  8. Membuat CRUD service product bagian 6 - Unit Test

  9. Membuat service filter dan download file CSV di django

  10. Django upload file menggunakan FileSystemStorage

  11. Tips meningkatkan kualitas code pada bahasa python

  12. Cara memfilter tipe data string pada golang dan python

  13. Mengubah format datetime pada bahasa python

  14. Mengolah data CSV dengan python pandas

  15. Sample join data CSV di python menggunakan pandas

  16. Menggunakan redis PUB/SUB untuk aplikasi python

  17. Implementasi blockchain ethereum pada industri real estate

  18. 4 Cara mengubah dictionary ke json pada python