Merge pull request #14 from zach-chai/username_step

username validations
This commit is contained in:
Zachary Chai 2016-10-19 16:33:17 -04:00 committed by GitHub
commit 201a3ca0f5
8 changed files with 26 additions and 10 deletions

View File

@ -1,4 +1,10 @@
.user { .user {
.error {
p {
font-size: 14px;
color: red;
}
}
.description { .description {
p { p {
font-size: 14px; font-size: 14px;

View File

@ -22,15 +22,13 @@ class LandingController < ApplicationController
render_meeting render_meeting
end end
def room
render_room
end
def admin? def admin?
@user == current_user @user == current_user
end end
helper_method :admin? helper_method :admin?
private private
def render_meeting def render_meeting
@resource = params[:resource] @resource = params[:resource]
@meeting_token = params[:id] || @meeting_token = helpers.new_meeting_token @meeting_token = params[:id] || @meeting_token = helpers.new_meeting_token

View File

@ -3,7 +3,7 @@ class SessionsController < ApplicationController
@user = User.from_omniauth(request.env['omniauth.auth']) @user = User.from_omniauth(request.env['omniauth.auth'])
if @user.persisted? if @user.persisted?
session[:user_id] = @user.id session[:user_id] = @user.id
redirect_to controller: 'landing', action: 'room', id: @user.username redirect_to controller: 'landing', action: 'index', id: @user.username, resource: 'rooms'
else else
@user.save! @user.save!
session[:user_id] = @user.id session[:user_id] = @user.id

View File

@ -9,8 +9,9 @@ class UsersController < ApplicationController
# PATCH/PUT /users/1.json # PATCH/PUT /users/1.json
def update def update
if @user.update(user_params) if @user.update(user_params)
redirect_to controller: 'landing', action: 'room', name: @user.username redirect_to controller: 'landing', action: 'index', id: @user.username, resource: 'rooms'
else else
@error = @user.errors.first[1] rescue nil
render :edit render :edit
end end
end end

View File

@ -1,6 +1,10 @@
class User < ApplicationRecord class User < ApplicationRecord
validates :username, uniqueness: true validates :username,
uniqueness: { message: "this username is taken" },
format: { with: /\A^[0-9a-z-_]+\Z/,
message: "Only allows lowercase alphanumeric characters with dashes and underscores",
allow_blank: true }
def self.from_omniauth(auth_hash) def self.from_omniauth(auth_hash)
user = find_or_initialize_by(uid: auth_hash['uid'], provider: auth_hash['provider']) user = find_or_initialize_by(uid: auth_hash['uid'], provider: auth_hash['provider'])

View File

@ -7,7 +7,11 @@
<% if !current_user.nil? %> <% if !current_user.nil? %>
<span class="user">Hello <%= current_user.name %></span> <span class="user">Hello <%= current_user.name %></span>
<%= link_to "Logout", user_logout_url() %> <%= link_to "Logout", user_logout_url() %>
<div><%= link_to 'Personal Room', current_user.room_url %></div> <% if current_user.username %>
<div><%= link_to 'Personal Room', current_user.room_url %></div>
<% else %>
<div><%= link_to 'Set Username', edit_user_path(current_user) %></div>
<% end %>
<% end %> <% end %>
</div> </div>
</div> </div>

View File

@ -8,6 +8,9 @@
</div> </div>
<%= f.submit class: "btn btn-success", value: "Save" %> <%= f.submit class: "btn btn-success", value: "Save" %>
<% end %> <% end %>
<div class="error">
<p><%= error %></p>
</div>
<div class="description"> <div class="description">
<p>This username will be used to identify your personal room</p> <p>This username will be used to identify your personal room</p>
</div> </div>

View File

@ -1,3 +1,3 @@
<div class="page-wrapper user edit"> <div class="page-wrapper user edit">
<%= render 'form', user: @user %> <%= render 'form', user: @user, error: @error %>
</div> </div>