forked from External/greenlight
		
	username validations
This commit is contained in:
		@@ -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() %>
 | 
				
			||||||
 | 
					          <% if current_user.username %>
 | 
				
			||||||
            <div><%= link_to 'Personal Room', current_user.room_url %></div>
 | 
					            <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>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user