forked from External/greenlight
Merge pull request #14 from zach-chai/username_step
username validations
This commit is contained in:
commit
201a3ca0f5
|
@ -1,4 +1,10 @@
|
||||||
.user {
|
.user {
|
||||||
|
.error {
|
||||||
|
p {
|
||||||
|
font-size: 14px;
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
}
|
||||||
.description {
|
.description {
|
||||||
p {
|
p {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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'])
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue