#### Repository https://github.com/python #### What Will I Learn? - Email verification - Create your own form in Django - Model migration #### Requirements - Basic Python - Install Python 3 - Install Django #### Resources - Python - https://www.python.org/ - Django- https://www.djangoproject.com/ - Bootstrap 4 - https://getbootstrap.com/docs/4.0/getting-started/introduction/ - http://ana-balica.github.io/2015/01/29/pagination-in-django/ #### Difficulty Basic ### Tutorial Content Hi all, today we will continue the tutorial about the authentication system on the Django forum. in the previous tutorial [part#1](https://steemit.com/utopian-io/@duski.harahap/authentication-system-in-the-forum-application-1-make-a-change-password-template-and-implement-the-change-password-feature), we have worked on the password change feature in our application. well in this section we will learn how to verify registered e-mail users. Of course, this part is not a basic thing, so I suggest that for those of you who are new in Django. I suggest you follow other tutorials before following this tutorial. We just start the following tutorial. ### Email verification So far our authentication system has been running well. we have been able to register, login and change the password with the system we have created. I will explain the background of the problem for our reasons for making email verification on our application. ***Why do we have to verify email ?*** In the ***current system*** when the user registers and registers successfully the user will be able to access our forum application immediately. well, sometimes we have to provide additional verification to check whether the user is a valid user by verifying the user's email. ***Change registration using Email*** In the ***current system*** when the user registers we require the user to fill in **USERNAME**, now this method we will change using **EMAIL**. basically, when we create a user model in this [tutorial](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-1-init-projects-and-dependencies-and-database-schema-1551711163679), Need to know in the user model there is a *default* field of Django which is ***is_active*** which is useful as a *reference* whether the user is allowed to **log in or not**. **is_active** is what we will use to give users *permission* to log in.**is_active** has a ***boolean*** value with the default value is **true**. So that in the ***current system*** when we have registered we can immediately log in without having to verify. Well, I have explained how the system we will create and the current system. for that then we just make this feature <br> ### Add an email field We will start by creating an additional field to store email users. If you follow this tutorial you will know that when we create a form for a **signup** *we still use the default form from Django*. We can see in the code below: ![Screenshot_3.png](https://ipfs.busy.org/ipfs/QmWHv94pQvVdbe9ovc8XmjtDT6D5AWx9fqS38wEe8KJ9AZ) we can see in the picture above we still use the default form from Django ```django.contrib.auth.forms```. For that, we will change the form so we can add email fields. I will make our own form. I will create a file with the name **forms.py** under the **account** folder. - **Custome signup form** After we create **forms.py** we will copy the form according to our wishes. For more details, we can see the code below: **account/forms.py** ``` from django import forms from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.models import User class SignUpForm(UserCreationForm): // Define Class use UserCreationForm to add email field email = forms.EmailField(max_length=200, help_text='Required') class Meta: model = User fields = ('username', 'email', 'password1', 'password2') ``` - **Import forms module:** To use the Django forms module we must import it first like the following ```from django import forms```. - **Import UserCreationForm:** then because we will add fields to ***UserCreationForm*** we can import them first ```from django.contrib.auth.forms import UserCreationForm```. - **Import user model** and don't forget the import user model that we will use to process user data ```from django.contrib.auth.models import User```. - We will define the class that we will use, namely ```class SignUpForm (UserCreationForm):```. In this function, we will pass the ***UserCreationForm*** as a parameter because we will add an email field to that form. We can add email fields using the ```EmailField()``` function. In this function we have ***two parameters***, namely ```max_length=200``` and ```help_text='Required'```. - **Meta class:** in our meta class we will define the model we will use, namely ```model = User``` and then we can define what fields we will display as follows ```field = ('username', 'email', 'password1', 'password2')```. <br> - **Use SignUpForm on the template** We have created the ***SignUpForm*** class, now we can use the Form in the **account/views.py** section. We will import the classes that are on **Forms.py**. For more details, we can see in the example below: **account/views.py** ``` from django.shortcuts import render, redirect from django.contrib.auth.forms import UserCreationForm, PasswordChangeForm from django.contrib.auth import update_session_auth_hash from django.urls import reverse, reverse_lazy from django.views import generic from django.contrib import messages from .forms import SignUpForm def SignUp(request): formClass = SignUpForm return render(request, 'signup.html', {'signupForm' : formClass}) ``` - The first thing we will do is import ***SignUpForm*** on **forms.py**, we can import it in this way ```from .forms import SignUpForm```. - The function that we will use is **SignUp** according to the class that we registered in the **account / urls.py** section: ![Screenshot_4.png](https://ipfs.busy.org/ipfs/QmdwPd4iXtnxy6CPXR1osU2ppjA5aYhPazHJNNPtm9d3DA) - Then after we import from **SignUpForm** we will render the **signup.html** template. We can use the ```render() ``` function that we imported earlier ```from django.shortcuts import render```. We save the **SignUpForm** that we imported into a **formClass** variable ```formClass = SignUpForm``` and the **formClass** variable we will pass to the template with the ```'signupForm'``` name. - After we render the form to the signup.html template we can display the form in the **signup.html** template: **account/templates/signup.html** ``` {% extends "base.html" %} {% block title %} Sign Up{% endblock %} {% block content %} <h2>Sign Up</h2> <form method="post"> {% csrf_token %} {{ signupForm.as_p }} <button type="submit" name="button">Register</button> </form> {% endblock%} ``` - to render it we can use this method ```{{signupForm.as_p}}```. ***important*** to remember ```signupForm``` is the *key* name of the variable that we are rendering in class **SignUp.** - If there is no error then we will see the results as follows: ![ezgif.com-video-to-gif (2).gif](https://cdn.steemitimages.com/DQmaE8ZNwrP3oFF3fjDJFx7CS3jo3avoQBTAvn2ax8eQzay/ezgif.com-video-to-gif%20(2).gif) We can see in the picture above we have succeeded in adding 1 additional input, e-mail, this means we have successfully created our own form. ### Make a profile model We have finished the frontend section to *render* a form and add an email field to the **form**. In the backend section, we will create a new model class that we will use as a schema from the profile table. In this class, we will define the fields that we will use in the model. For more details, we can see the example below: **forums/models.py** ``` class Profile(models.Model): user = models.OneToOneField(user, null=True, blank=True, on_delete=models.CASCADE) activation_key = models.CharField(max_length=255, default=1) email_validated = models.BooleanField(default=False) def __str__(self): return self.user.username ``` - We will create a Profile function ```class Profile(models.Model)```. In this function, we will pass the model ```models.Model```. - The first we will create a user field, in the user field we will use the ```OneToOneField ()``` function. We will use this function to make relationships one to one. - The second field, we will define ***activation_key***. ***activation_key*** uses the ```Charfield ()``` function with ```max_length = 255``` and default value is ```default=1```. - The third field is ***email_validated***. Well in this field we will save the user's status, whether the user has verified it or not, if it has verified the value is True and the default value is ``default=False```. - Then we can retouch the model results in the following way ```def __str__(self):``` and we will return ```return self.user.username```. <br> - **Model migration** Well, after we *define* the fields that will be used in the ***profile*** model. We can migrate so that the model *schema* can be *generated* and recognized by the **Django** system. For more details, we can see the demonstration below: ![ezgif.com-video-to-gif (3).gif](https://cdn.steemitimages.com/DQmaaSQXB7rf47CKww4Q1YQLrGL4GkAUL588nWoJCHoW32y/ezgif.com-video-to-gif%20(3).gif) We see in the picture above we managed to make a migration to our new model, there are two steps taken, the following is the explanation: - **python manage.py makemigrations** The first thing we will do is make migrations. we will make a migration on the profile model that we have created. If we successfully migrate we will see a new file that is generated as we see in the picture below: ![Screenshot_5.png](https://ipfs.busy.org/ipfs/QmU3mgxzWmaKFA69gFV1RYDrYvRd7QRNm5xi7CJi4NVxXa) **forums/migrations/003_profile.py** ``` # Generated by Django 2.1.4 on 2019-04-22 13:50 from django.conf import settings from django.db import migrations, models import django.db.models.deletion class Migration(migrations.Migration): dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('forums', '0002_forum_slug'), ] operations = [ migrations.CreateModel( name='Profile', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('activation_key', models.CharField(default=1, max_length=255)), ('email_validated', models.BooleanField(default=False)), ('user', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), ] ``` The file above is generated from migration, then after we migrate we will **migrate**. - **Python make migrate** We have migrated but to use and implement it we have to apply the new model to our system so we need to do ```python manage.py migrate```, we can see in the picture below: ![Screenshot_6.png](https://ipfs.busy.org/ipfs/QmY8PLdDxEMbPbxLagbU4wfSZSoo6qcTUa6dLDmBgTDfBt) Now we have finished the backend process when verifying email. thank you for following this tutorial hopefully useful ### Curriculum - **Forum app** [django#1](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-1-init-projects-and-dependencies-and-database-schema-1551711163679), [django#2](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-2-template-system-and-class-based-view-implementation-1552057536737), [django#3](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-3-base-template-login-and-register-system-1552311993977), [django#4](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-4-admin-dashboard-ang-setting-redirect), [django#5](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-5-slug-concept-and-generated-slug-and-use-forms-generic-view), [django#6](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-6-crud-system-and-url-protection-redirect-system), [django#7](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-7-unique-slug-and-manage-modules-in-admin-dashboard-1553268749861), [django#8](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-8-display-forum-data-and-create-and-implement-list-view-1553525769014), [django#8](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-8-display-forum-data-and-create-and-implement-list-view-1553525769014), [django#9](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-9-single-page-for-forums-passing-params-in-routing-and-make-time-humanize-1553788983186), [django#10](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-10-detail-page-for-forums-use-slug-as-the-parameter-url-and-implement-getcontextdata), [django#11](https://steemit.com/utopian-io/@duski.harahap/create-a-forum-application-using-django-11-url-behavior-and-update-view-and-edit-menu-1554268753908) #### Proof of work done https://github.com/milleaduski/forums-django
post_id | 73,538,387 |
---|---|
author | duski.harahap |
permlink | authentication-system-in-the-forum-application-2-email-verification-create-form-and-model-migration |
category | utopian-io |
json_metadata | {"tags":["utopian-io","tutorials","django","python","web"],"image":["https:\/\/ipfs.busy.org\/ipfs\/QmWHv94pQvVdbe9ovc8XmjtDT6D5AWx9fqS38wEe8KJ9AZ","https:\/\/ipfs.busy.org\/ipfs\/QmdwPd4iXtnxy6CPXR1osU2ppjA5aYhPazHJNNPtm9d3DA","https:\/\/cdn.steemitimages.com\/DQmaE8ZNwrP3oFF3fjDJFx7CS3jo3avoQBTAvn2ax8eQzay\/ezgif.com-video-to-gif%20(2).gif","https:\/\/cdn.steemitimages.com\/DQmaaSQXB7rf47CKww4Q1YQLrGL4GkAUL588nWoJCHoW32y\/ezgif.com-video-to-gif%20(3).gif","https:\/\/ipfs.busy.org\/ipfs\/QmU3mgxzWmaKFA69gFV1RYDrYvRd7QRNm5xi7CJi4NVxXa","https:\/\/ipfs.busy.org\/ipfs\/QmY8PLdDxEMbPbxLagbU4wfSZSoo6qcTUa6dLDmBgTDfBt"],"links":["https:\/\/github.com\/python","https:\/\/www.python.org\/","https:\/\/www.djangoproject.com\/","https:\/\/getbootstrap.com\/docs\/4.0\/getting-started\/introduction\/","http:\/\/ana-balica.github.io\/2015\/01\/29\/pagination-in-django\/","https:\/\/steemit.com\/utopian-io\/@duski.harahap\/authentication-system-in-the-forum-application-1-make-a-change-password-template-and-implement-the-change-password-feature","https:\/\/steemit.com\/utopian-io\/@duski.harahap\/create-a-forum-application-using-django-1-init-projects-and-dependencies-and-database-schema-1551711163679","https:\/\/steemit.com\/utopian-io\/@duski.harahap\/create-a-forum-application-using-django-2-template-system-and-class-based-view-implementation-1552057536737","https:\/\/steemit.com\/utopian-io\/@duski.harahap\/create-a-forum-application-using-django-3-base-template-login-and-register-system-1552311993977","https:\/\/steemit.com\/utopian-io\/@duski.harahap\/create-a-forum-application-using-django-4-admin-dashboard-ang-setting-redirect","https:\/\/steemit.com\/utopian-io\/@duski.harahap\/create-a-forum-application-using-django-5-slug-concept-and-generated-slug-and-use-forms-generic-view","https:\/\/steemit.com\/utopian-io\/@duski.harahap\/create-a-forum-application-using-django-6-crud-system-and-url-protection-redirect-system","https:\/\/steemit.com\/utopian-io\/@duski.harahap\/create-a-forum-application-using-django-7-unique-slug-and-manage-modules-in-admin-dashboard-1553268749861","https:\/\/steemit.com\/utopian-io\/@duski.harahap\/create-a-forum-application-using-django-8-display-forum-data-and-create-and-implement-list-view-1553525769014","https:\/\/steemit.com\/utopian-io\/@duski.harahap\/create-a-forum-application-using-django-9-single-page-for-forums-passing-params-in-routing-and-make-time-humanize-1553788983186","https:\/\/steemit.com\/utopian-io\/@duski.harahap\/create-a-forum-application-using-django-10-detail-page-for-forums-use-slug-as-the-parameter-url-and-implement-getcontextdata","https:\/\/steemit.com\/utopian-io\/@duski.harahap\/create-a-forum-application-using-django-11-url-behavior-and-update-view-and-edit-menu-1554268753908","https:\/\/github.com\/milleaduski\/forums-django"],"app":"steemit\/0.1","format":"markdown"} |
created | 2019-04-22 14:41:57 |
last_update | 2019-04-22 14:41:57 |
depth | 0 |
children | 4 |
net_rshares | 31,152,126,428,365 |
last_payout | 2019-04-29 14:41:57 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 11.940 SBD |
curator_payout_value | 3.653 SBD |
pending_payout_value | 0.000 SBD |
promoted | 0.000 SBD |
body_length | 13,297 |
author_reputation | 60,101,995,119,153 |
root_title | "Authentication system in the forum application #2: Email verification, Create form and Model Migration" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 SBD |
percent_steem_dollars | 10,000 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
tombstone | 0 | 2,990,642,886,843 | 11.71% | ||
daan | 0 | 16,405,492,231 | 5% | ||
bullionstackers | 0 | 6,301,990,533 | 1% | ||
rufans | 0 | 20,816,071,571 | 100% | ||
elena-singer | 0 | 38,136,345,543 | 100% | ||
abh12345 | 0 | 7,726,933,988 | 1.46% | ||
eforucom | 0 | 14,297,159,112 | 2% | ||
techslut | 0 | 44,378,543,910 | 10% | ||
minersean | 0 | 8,008,821,347 | 75% | ||
erikaflynn | 0 | 16,163,041,226 | 35% | ||
miniature-tiger | 0 | 101,190,594,332 | 50% | ||
sacred-agent | 0 | 3,419,204,858 | 3% | ||
aleister | 0 | 7,987,423,176 | 15% | ||
jakipatryk | 0 | 15,195,320,765 | 50% | ||
jga | 0 | 1,977,418,999 | 14.64% | ||
helo | 0 | 59,000,205,846 | 22.16% | ||
lorenzor | 0 | 816,190,056 | 7.32% | ||
suesa | 0 | 132,002,134,176 | 25% | ||
codingdefined | 0 | 32,315,079,973 | 22.16% | ||
veritasvav | 0 | 45,375,224,624 | 100% | ||
tsoldovieri | 0 | 1,039,882,701 | 7.32% | ||
tykee | 0 | 6,767,199,759 | 14.64% | ||
steemitri | 0 | 138,483,049,838 | 100% | ||
iamphysical | 0 | 16,505,753,381 | 90% | ||
felixrodriguez | 0 | 361,908,375 | 5.12% | ||
azulear | 0 | 515,085,236 | 100% | ||
silviu93 | 0 | 3,972,539,902 | 14.64% | ||
jadabug | 0 | 1,643,702,847 | 1% | ||
dakeshi | 0 | 614,956,568 | 14.64% | ||
accelerator | 0 | 8,099,530,036 | 0.5% | ||
buckydurddle | 0 | 10,636,146,220 | 28.8% | ||
jinger | 0 | 2,963,309,087 | 35.45% | ||
espoem | 0 | 63,969,192,655 | 31.83% | ||
mcfarhat | 0 | 17,568,036,583 | 8.86% | ||
vishalsingh4997 | 0 | 88,336,461 | 14.64% | ||
pataty69 | 0 | 23,335,610,397 | 10% | ||
elear | 0 | 7,607,451,644 | 29.28% | ||
zoneboy | 0 | 25,721,657,491 | 100% | ||
carloserp-2000 | 0 | 31,945,019,170 | 100% | ||
carlos84 | 0 | 512,416,235 | 14.64% | ||
che-shyr | 0 | 1,078,924,137 | 50% | ||
utopian-io | 0 | 25,477,954,958,834 | 29.28% | ||
imisstheoldkanye | 0 | 1,543,329,517 | 1% | ||
jaff8 | 0 | 55,874,968,305 | 22.16% | ||
amestyj | 0 | 555,136,895 | 14.64% | ||
mcyusuf | 0 | 2,107,599,757 | 14.64% | ||
alexs1320 | 0 | 23,949,639,823 | 15% | ||
gentleshaid | 0 | 26,118,803,950 | 29.28% | ||
lostmine27 | 0 | 12,785,756,033 | 50% | ||
cpufronz | 0 | 1,665,672,499 | 50% | ||
ivymalifred | 0 | 216,311,085 | 7.32% | ||
aussieninja | 0 | 5,392,652,910 | 14.64% | ||
ennyta | 0 | 91,443,914 | 7.32% | ||
vjap55 | 0 | 1,045,056,176 | 100% | ||
dedicatedguy | 0 | 51,971,082,213 | 100% | ||
amosbastian | 0 | 88,004,146,220 | 22.16% | ||
eliaschess333 | 0 | 1,350,449,385 | 7.32% | ||
grzesiekb | 0 | 303,156,360,920 | 100% | ||
harry-heightz | 0 | 13,149,277,913 | 29.28% | ||
scienceangel | 0 | 49,698,550,203 | 50% | ||
portugalcoin | 0 | 15,243,812,561 | 15% | ||
vanarchist | 0 | 2,922,022,674 | 100% | ||
sargoon | 0 | 202,792,948 | 3% | ||
darewealth | 0 | 5,860,512,697 | 29.28% | ||
tobias-g | 0 | 158,316,432,178 | 42% | ||
dongentle2 | 0 | 4,085,096,428 | 14.64% | ||
miguelangel2801 | 0 | 72,773,506 | 7.32% | ||
didic | 0 | 31,581,644,934 | 25% | ||
joaorafael | 0 | 334,559,601 | 75% | ||
emiliomoron | 0 | 659,174,936 | 7.32% | ||
celmor | 0 | 550,899,058 | 100% | ||
micaelacf | 0 | 334,648,760 | 10% | ||
mirkosche | 0 | 98,131,542 | 28.8% | ||
ulisesfl17 | 0 | 915,800,645 | 30% | ||
arac | 0 | 129,298,163 | 10% | ||
reazuliqbal | 0 | 37,513,490,059 | 20% | ||
properfraction | 0 | 2,570,370,893 | 100% | ||
tomastonyperez | 0 | 1,737,072,055 | 7.32% | ||
inespereira | 0 | 304,843,217 | 75% | ||
elvigia | 0 | 1,351,914,892 | 7.32% | ||
jubreal | 0 | 4,598,495,287 | 29.28% | ||
ezravandi | 0 | 3,000,387,349 | 1% | ||
yu-stem | 0 | 13,443,524,662 | 33% | ||
luiscd8a | 0 | 1,325,958,781 | 80% | ||
eniolw | 0 | 7,252,438,332 | 100% | ||
josedelacruz | 0 | 710,211,069 | 7.32% | ||
joseangelvs | 0 | 209,465,770 | 14.64% | ||
viannis | 0 | 173,141,143 | 7.32% | ||
rollthedice | 0 | 3,252,771,694 | 29.28% | ||
flores39 | 0 | 420,166,850 | 100% | ||
erickyoussif | 0 | 265,415,574 | 14.64% | ||
javicuesta | 0 | 327,304,540 | 14.4% | ||
anaestrada12 | 0 | 3,150,849,139 | 14.64% | ||
jesusfl17 | 0 | 411,202,030 | 100% | ||
bflanagin | 0 | 2,635,833,134 | 14.64% | ||
mightypanda | 0 | 10,206,145,461 | 5% | ||
faireasadown | 0 | 540,736,558 | 100% | ||
ubaldonet | 0 | 4,414,562,689 | 65% | ||
xybb | 0 | 540,077,565 | 100% | ||
dalz | 0 | 6,070,492,605 | 11.71% | ||
ulockblock | 0 | 53,637,614,023 | 16.3% | ||
amart29 | 0 | 222,292,333 | 2.19% | ||
jk6276 | 0 | 1,284,710,328 | 14.64% | ||
apbartimysq | 0 | 539,305,959 | 100% | ||
blabessowood | 0 | 549,988,199 | 100% | ||
ocundhatfa | 0 | 550,242,808 | 100% | ||
brougagpaduc | 0 | 532,670,891 | 100% | ||
verclandtebma | 0 | 529,729,624 | 100% | ||
diformadoc | 0 | 537,828,363 | 100% | ||
olalmagta | 0 | 538,715,988 | 100% | ||
luc.real | 0 | 204,095,356 | 100% | ||
dssdsds | 0 | 1,679,624,621 | 14.64% | ||
natalieqz01 | 0 | 529,229,031 | 100% | ||
jayplayco | 0 | 62,495,300,050 | 14.64% | ||
cryptouno | 0 | 414,320,198 | 5% | ||
lupafilotaxia | 0 | 17,375,429,014 | 100% | ||
tbtek | 0 | 78,409,285 | 25% | ||
fran.frey | 0 | 222,767,243 | 7.32% | ||
alaiza | 0 | 471,664,948 | 100% | ||
mops2e | 0 | 352,095,916 | 25.46% | ||
graceb9l73 | 0 | 541,189,620 | 100% | ||
destinymd | 0 | 540,196,011 | 100% | ||
munhenhos | 0 | 684,891,740 | 10% | ||
stem-espanol | 0 | 9,427,822,963 | 14.64% | ||
bhaski | 0 | 829,274,443 | 10% | ||
lapp | 0 | 470,519,533 | 100% | ||
steemtpistia | 0 | 469,953,530 | 100% | ||
crassipes | 0 | 470,240,970 | 100% | ||
progsernaro | 0 | 539,859,312 | 100% | ||
boycaltati | 0 | 517,587,927 | 100% | ||
erimirca1973 | 0 | 534,662,938 | 100% | ||
slitperhohar | 0 | 542,509,818 | 100% | ||
beosahymed | 0 | 550,718,166 | 100% | ||
ornorodi1986 | 0 | 527,794,124 | 100% | ||
agrovision | 0 | 470,526,094 | 100% | ||
steem-ua | 0 | 562,677,419,465 | 6% | ||
giulyfarci52 | 0 | 117,891,105 | 7.32% | ||
nataliend | 0 | 535,644,657 | 100% | ||
hdu | 0 | 976,618,760 | 1% | ||
oliviad | 0 | 522,629,445 | 100% | ||
steemexpress | 0 | 1,676,317,262 | 2.87% | ||
alex-hm | 0 | 1,593,882,008 | 50% | ||
mrsbozz | 0 | 929,412,474 | 25% | ||
ascorphat | 0 | 1,807,718,302 | 2.5% | ||
rewarding | 0 | 5,311,949,894 | 64.64% | ||
pgshow | 0 | 989,442,062 | 1.3% | ||
jk6276.mons | 0 | 993,007,599 | 29.28% | ||
jaxson2011 | 0 | 1,121,187,312 | 29.28% | ||
utopian.trail | 0 | 11,692,239,312 | 29.28% | ||
emypooker | 0 | 184,206,781 | 100% | ||
dicetime | 0 | 30,644,649,524 | 14.64% | ||
wikita | 0 | 536,970,673 | 100% |
Thank you for your contribution @duski.harahap. After reviewing your contribution, we suggest you following points: - The structure of the tutorial has improved in this contribution. However, we still think bullet placement makes the tutorial a bit confusing. - In some sections of code you have not added any comments. We suggest that you always put a brief comment on the code sections as it helps less experienced users better understand what you are teaching. - In our opinion the recovery of the password should be on a different page of the registry. - Putting a new password could have a validator to check if the password is strong, so as not to let users put passwords easy. Thank you for your work in developing this tutorial. Looking forward to your upcoming tutorials. Your contribution has been evaluated according to [Utopian policies and guidelines](https://join.utopian.io/guidelines), as well as a predefined set of questions pertaining to the category. To view those questions and the relevant answers related to your post, [click here](https://review.utopian.io/result/8/2-2-1-1-1-3-2-3-). ---- Need help? Chat with us on [Discord](https://discord.gg/uTyJkNm). [[utopian-moderator]](https://join.utopian.io/)
post_id | 73,546,168 |
---|---|
author | portugalcoin |
permlink | re-duskiharahap-authentication-system-in-the-forum-application-2-email-verification-create-form-and-model-migration-20190422t183243921z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"users":["duski.harahap"],"links":["https:\/\/join.utopian.io\/guidelines","https:\/\/review.utopian.io\/result\/8\/2-2-1-1-1-3-2-3-","https:\/\/discord.gg\/uTyJkNm","https:\/\/join.utopian.io\/"],"app":"steemit\/0.1"} |
created | 2019-04-22 18:32:45 |
last_update | 2019-04-22 18:32:45 |
depth | 1 |
children | 1 |
net_rshares | 10,012,684,041,982 |
last_payout | 2019-04-29 18:32:45 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 3.814 SBD |
curator_payout_value | 1.163 SBD |
pending_payout_value | 0.000 SBD |
promoted | 0.000 SBD |
body_length | 1,237 |
author_reputation | 214,343,891,436,406 |
root_title | "Authentication system in the forum application #2: Email verification, Create form and Model Migration" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 SBD |
percent_steem_dollars | 10,000 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
codingdefined | 0 | 30,515,830,477 | 21.38% | ||
buckydurddle | 0 | 9,884,600,090 | 27.79% | ||
espoem | 0 | 29,189,610,912 | 15% | ||
utopian-io | 0 | 9,618,638,723,260 | 10.73% | ||
jaff8 | 0 | 52,359,140,992 | 21.38% | ||
emrebeyler | 0 | 0 | 0.01% | ||
amosbastian | 0 | 82,469,561,730 | 21.38% | ||
ismailkah | 0 | 4,215,932,425 | 25% | ||
organicgardener | 0 | 10,669,910,724 | 35% | ||
sudefteri | 0 | 8,556,025,888 | 100% | ||
reazuliqbal | 0 | 14,492,048,433 | 8% | ||
amico | 0 | 1,412,047,508 | 0.55% | ||
statsexpert | 0 | 9,206,410,860 | 100% | ||
mightypanda | 0 | 81,499,641,636 | 40% | ||
ulockblock | 0 | 30,886,626,652 | 9.44% | ||
fastandcurious | 0 | 357,675,445 | 100% | ||
curbot | 0 | 2,473,795,865 | 100% | ||
linknotfound | 0 | 266,377,775 | 100% | ||
ascorphat | 0 | 1,806,721,204 | 2.5% | ||
monster-inc | 0 | 2,150,326,412 | 100% | ||
yff | 0 | 19,776,115,220 | 100% | ||
curatortrail | 0 | 318,672,966 | 95% | ||
holydog | 0 | 741,887,426 | 2% | ||
tenyears | 0 | 519,175,125 | 98% | ||
cleanit | 0 | 277,182,957 | 55% |
Thank you for your review, @portugalcoin! Keep up the good work!
post_id | 73,672,783 |
---|---|
author | utopian-io |
permlink | re-re-duskiharahap-authentication-system-in-the-forum-application-2-email-verification-create-form-and-model-migration-20190422t183243921z-20190424t232738z |
category | utopian-io |
json_metadata | {"app":"beem\/0.20.17"} |
created | 2019-04-24 23:27:39 |
last_update | 2019-04-24 23:27:39 |
depth | 2 |
children | 0 |
net_rshares | 0 |
last_payout | 2019-05-01 23:27:39 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 SBD |
curator_payout_value | 0.000 SBD |
pending_payout_value | 0.000 SBD |
promoted | 0.000 SBD |
body_length | 64 |
author_reputation | 152,913,012,544,965 |
root_title | "Authentication system in the forum application #2: Email verification, Create form and Model Migration" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 SBD |
percent_steem_dollars | 10,000 |
#### Hi @duski.harahap! Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation! Your post is eligible for our upvote, thanks to our collaboration with @utopian-io! **Feel free to join our [@steem-ua Discord server](https://discord.gg/KpBNYGz)**
post_id | 73,546,354 |
---|---|
author | steem-ua |
permlink | re-authentication-system-in-the-forum-application-2-email-verification-create-form-and-model-migration-20190422t183927z |
category | utopian-io |
json_metadata | {"app":"beem\/0.20.19"} |
created | 2019-04-22 18:39:27 |
last_update | 2019-04-22 18:39:27 |
depth | 1 |
children | 0 |
net_rshares | 0 |
last_payout | 2019-04-29 18:39:27 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 SBD |
curator_payout_value | 0.000 SBD |
pending_payout_value | 0.000 SBD |
promoted | 0.000 SBD |
body_length | 292 |
author_reputation | 23,203,609,903,979 |
root_title | "Authentication system in the forum application #2: Email verification, Create form and Model Migration" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 SBD |
percent_steem_dollars | 10,000 |
Hey, @duski.harahap! **Thanks for contributing on Utopian**. Weβre already looking forward to your next contribution! **Get higher incentives and support Utopian.io!** Simply set @utopian.pay as a 5% (or higher) payout beneficiary on your contribution post (via [SteemPlus](https://chrome.google.com/webstore/detail/steemplus/mjbkjgcplmaneajhcbegoffkedeankaj?hl=en) or [Steeditor](https://steeditor.app)). **Want to chat? Join us on Discord https://discord.gg/h52nFrV.** <a href='https://steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1'>Vote for Utopian Witness!</a>
post_id | 73,547,053 |
---|---|
author | utopian-io |
permlink | re-authentication-system-in-the-forum-application-2-email-verification-create-form-and-model-migration-20190422t190322z |
category | utopian-io |
json_metadata | {"app":"beem\/0.20.17"} |
created | 2019-04-22 19:03:24 |
last_update | 2019-04-22 19:03:24 |
depth | 1 |
children | 0 |
net_rshares | 0 |
last_payout | 2019-04-29 19:03:24 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 SBD |
curator_payout_value | 0.000 SBD |
pending_payout_value | 0.000 SBD |
promoted | 0.000 SBD |
body_length | 595 |
author_reputation | 152,913,012,544,965 |
root_title | "Authentication system in the forum application #2: Email verification, Create form and Model Migration" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 SBD |
percent_steem_dollars | 10,000 |