forked from External/greenlight
commit
b6e17b88c7
|
@ -0,0 +1,7 @@
|
|||
.user {
|
||||
.description {
|
||||
p {
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,7 +19,7 @@ class LandingController < ApplicationController
|
|||
@room_name = params[:name]
|
||||
@user = User.find_by(username: @room_name)
|
||||
@meeting_token = @room_name
|
||||
@resource = params[:resource]
|
||||
@resource = "rooms"
|
||||
@resource_url = room_url(@meeting_token)
|
||||
if @user.nil?
|
||||
redirect_to root_path
|
||||
|
|
|
@ -1,8 +1,14 @@
|
|||
class SessionsController < ApplicationController
|
||||
def create
|
||||
@user = User.from_omniauth(request.env['omniauth.auth'])
|
||||
session[:user_id] = @user.id
|
||||
redirect_to controller: 'landing', action: 'room', name: @user.username
|
||||
if @user.persisted?
|
||||
session[:user_id] = @user.id
|
||||
redirect_to controller: 'landing', action: 'room', name: @user.username
|
||||
else
|
||||
@user.save!
|
||||
session[:user_id] = @user.id
|
||||
redirect_to controller: 'users', action: 'edit', id: @user.id
|
||||
end
|
||||
rescue => e
|
||||
logger.error "Error authenticating via omniauth: #{e}"
|
||||
redirect_to root_path
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
class UsersController < ApplicationController
|
||||
before_action :set_user, only: [:edit, :update]
|
||||
|
||||
# GET /users/1/edit
|
||||
def edit
|
||||
end
|
||||
|
||||
# PATCH/PUT /users/1
|
||||
# PATCH/PUT /users/1.json
|
||||
def update
|
||||
if @user.update(user_params)
|
||||
redirect_to controller: 'landing', action: 'room', name: @user.username
|
||||
else
|
||||
render :edit
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
def set_user
|
||||
@user = User.find(params[:id])
|
||||
if @user.username
|
||||
raise ActionController::RoutingError.new('Not Found')
|
||||
end
|
||||
end
|
||||
|
||||
# Never trust parameters from the scary internet, only allow the white list through.
|
||||
def user_params
|
||||
params.require(:user).permit(:username)
|
||||
end
|
||||
end
|
|
@ -0,0 +1,2 @@
|
|||
module UsersHelper
|
||||
end
|
|
@ -1,10 +1,13 @@
|
|||
class User < ApplicationRecord
|
||||
|
||||
validates :username, uniqueness: true
|
||||
|
||||
def self.from_omniauth(auth_hash)
|
||||
user = find_or_create_by(uid: auth_hash['uid'], provider: auth_hash['provider'])
|
||||
user.username = self.send("#{auth_hash['provider']}_username", auth_hash) rescue nil
|
||||
user.name = auth_hash['info']['name']
|
||||
user.save!
|
||||
user = find_or_initialize_by(uid: auth_hash['uid'], provider: auth_hash['provider'])
|
||||
unless user.persisted?
|
||||
# user.username = self.send("#{auth_hash['provider']}_username", auth_hash) rescue nil
|
||||
user.name = auth_hash['info']['name']
|
||||
end
|
||||
user
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
<div class="col-sm-4 col-sm-offset-4">
|
||||
<div class="jumbotron">
|
||||
<h4>Enter Username below</h4>
|
||||
|
||||
<%= form_for(user, html: {class: "form-inline"}) do |f| %>
|
||||
<div class="form-group">
|
||||
<%= f.text_field :username, placeholder: "Username", class: "form-control input" %>
|
||||
</div>
|
||||
<%= f.submit class: "btn btn-success", value: "Save" %>
|
||||
<% end %>
|
||||
<div class="description">
|
||||
<p>This username will be used to identify your personal room</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,3 @@
|
|||
<div class="page-wrapper user edit">
|
||||
<%= render 'form', user: @user %>
|
||||
</div>
|
|
@ -1,9 +1,11 @@
|
|||
Rails.application.routes.draw do
|
||||
resources :users, only: [:edit, :update]
|
||||
|
||||
get 'bbb/join/:resource/:id', to: 'bbb#join', as: :bbb_join
|
||||
|
||||
get '/meetings/new', to: 'landing#new_meeting', as: :new_meeting
|
||||
get '/meetings(/:id)', to: 'landing#meeting', as: :meeting, :resource => "meetings"
|
||||
get '/rooms/:name', to: 'landing#room', as: :room, :resource => "rooms"
|
||||
get '/rooms/:name', to: 'landing#room', as: :room
|
||||
|
||||
get '/auth/:provider/callback', to: 'sessions#create'
|
||||
get '/logout', to: 'sessions#destroy'
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
require 'test_helper'
|
||||
|
||||
class UsersControllerTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@user = users(:one)
|
||||
end
|
||||
|
||||
test "should get edit" do
|
||||
get edit_user_url(@user)
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should update user" do
|
||||
patch user_url(@user), params: { user: { username: @user.username } }
|
||||
assert_redirected_to user_url(@user)
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in New Issue