DEV Community

Discussion on: Your thoughts on Creating a New User

Collapse
 
dmfay profile image
Dian Fay

It's a good idea to have an is_active flag on users. This way you can create them but not allow access until they've confirmed/paid up, and should it become necessary to disable their access later you can do it without nuking their entire account and dealing with whatever foreign key mayhem ensues.

Collapse
 
jochemstoel profile image
Jochem Stoel

I would like to suggest that in stead of is_active, you call this property of user just active. (Boolean) this is more correct for many reasons.

Collapse
 
dmfay profile image
Dian Fay

What are those reasons? I find is_* clear for boolean fields since it makes it easy to identify them as answering a yes-or-no question, and where naming things isn't about clarity it's really down to taste.

Thread Thread
 
jochemstoel profile image
Jochem Stoel

The word is is redundant.
User.active = true
Why would you add it? You can tell that it is yes/no by the field/property type being Boolean. It's like putting 'equals' in your property name.

Thread Thread
 
dmfay profile image
Dian Fay • Edited

It's not always obvious that something is a boolean unless you're looking at a table or class definition. Redundancy isn't universally evil: here it means you don't have to look up the type if you're just looking at usage.

Thread Thread
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
jessachandler profile image
Jess Chandler

thanks for your thoughts. I'll have to look at the naming conventions.

Collapse
 
jessachandler profile image
Jess Chandler

Thanks for your comment, Dian!

I agree to having an is_active flag. Do you create users before confirmation in your apps? Do you have a flow that is like, "Hey, wanna join, enter your email" form collecting email -> create temp user with email, isactive=false, and token -> send email with button to confirm -> when user clicks on button -> go to website with token and get redirected to form collecting rest of stuff ?

Collapse
 
dmfay profile image
Dian Fay

My situation's a bit different since the stuff I work on is all enterprise software. We recently offloaded all our user management onto a single sign-on provider, but before that we did collect their information on signup and send them an activation/password reset email with a token (token hash and expiry stored in the database for verification). We didn't have a second stage, but then we weren't charging individual users.

Thread Thread
 
jessachandler profile image
Jess Chandler

Thanks for sharing your experience!

Collapse
 
bgadrian profile image
Adrian B.G.

This also covers the case when the money are refunded (for any reason), or they brake the user policy of somekind (revoke access).