forked from External/greenlight
commit
352abe78af
|
@ -16,6 +16,7 @@
|
||||||
/tmp/*
|
/tmp/*
|
||||||
!/log/.keep
|
!/log/.keep
|
||||||
!/tmp/.keep
|
!/tmp/.keep
|
||||||
|
.env
|
||||||
|
|
||||||
# Ignore Byebug command history file.
|
# Ignore Byebug command history file.
|
||||||
.byebug_history
|
.byebug_history
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
FROM ruby:2.3.1
|
||||||
|
|
||||||
|
# app dependencies
|
||||||
|
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
|
||||||
|
|
||||||
|
# app directory
|
||||||
|
RUN mkdir /usr/src/app
|
5
Gemfile
5
Gemfile
|
@ -33,6 +33,7 @@ gem 'jbuilder', '~> 2.5'
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
||||||
gem 'byebug', platform: :mri
|
gem 'byebug', platform: :mri
|
||||||
|
gem 'dotenv-rails'
|
||||||
end
|
end
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
|
@ -47,5 +48,7 @@ end
|
||||||
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||||
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
||||||
|
|
||||||
|
gem 'omniauth'
|
||||||
|
gem 'omniauth-twitter'
|
||||||
|
gem 'omniauth-google-oauth2'
|
||||||
gem 'bigbluebutton-api-ruby'
|
gem 'bigbluebutton-api-ruby'
|
||||||
|
|
||||||
|
|
41
Gemfile.lock
41
Gemfile.lock
|
@ -52,11 +52,18 @@ GEM
|
||||||
coffee-script-source (1.10.0)
|
coffee-script-source (1.10.0)
|
||||||
concurrent-ruby (1.0.2)
|
concurrent-ruby (1.0.2)
|
||||||
debug_inspector (0.0.2)
|
debug_inspector (0.0.2)
|
||||||
|
dotenv (2.1.1)
|
||||||
|
dotenv-rails (2.1.1)
|
||||||
|
dotenv (= 2.1.1)
|
||||||
|
railties (>= 4.0, < 5.1)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
execjs (2.7.0)
|
execjs (2.7.0)
|
||||||
|
faraday (0.9.2)
|
||||||
|
multipart-post (>= 1.2, < 3)
|
||||||
ffi (1.9.14)
|
ffi (1.9.14)
|
||||||
globalid (0.3.7)
|
globalid (0.3.7)
|
||||||
activesupport (>= 4.1.0)
|
activesupport (>= 4.1.0)
|
||||||
|
hashie (3.4.6)
|
||||||
i18n (0.7.0)
|
i18n (0.7.0)
|
||||||
jbuilder (2.6.0)
|
jbuilder (2.6.0)
|
||||||
activesupport (>= 3.0.0, < 5.1)
|
activesupport (>= 3.0.0, < 5.1)
|
||||||
|
@ -65,6 +72,8 @@ GEM
|
||||||
rails-dom-testing (>= 1, < 3)
|
rails-dom-testing (>= 1, < 3)
|
||||||
railties (>= 4.2.0)
|
railties (>= 4.2.0)
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
|
json (1.8.3)
|
||||||
|
jwt (1.5.6)
|
||||||
listen (3.0.8)
|
listen (3.0.8)
|
||||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||||
rb-inotify (~> 0.9, >= 0.9.7)
|
rb-inotify (~> 0.9, >= 0.9.7)
|
||||||
|
@ -79,9 +88,35 @@ GEM
|
||||||
mini_portile2 (2.1.0)
|
mini_portile2 (2.1.0)
|
||||||
minitest (5.9.1)
|
minitest (5.9.1)
|
||||||
multi_json (1.12.1)
|
multi_json (1.12.1)
|
||||||
|
multi_xml (0.5.5)
|
||||||
|
multipart-post (2.0.0)
|
||||||
nio4r (1.2.1)
|
nio4r (1.2.1)
|
||||||
nokogiri (1.6.8.1)
|
nokogiri (1.6.8.1)
|
||||||
mini_portile2 (~> 2.1.0)
|
mini_portile2 (~> 2.1.0)
|
||||||
|
oauth (0.5.1)
|
||||||
|
oauth2 (1.2.0)
|
||||||
|
faraday (>= 0.8, < 0.10)
|
||||||
|
jwt (~> 1.0)
|
||||||
|
multi_json (~> 1.3)
|
||||||
|
multi_xml (~> 0.5)
|
||||||
|
rack (>= 1.2, < 3)
|
||||||
|
omniauth (1.3.1)
|
||||||
|
hashie (>= 1.2, < 4)
|
||||||
|
rack (>= 1.0, < 3)
|
||||||
|
omniauth-google-oauth2 (0.4.1)
|
||||||
|
jwt (~> 1.5.2)
|
||||||
|
multi_json (~> 1.3)
|
||||||
|
omniauth (>= 1.1.1)
|
||||||
|
omniauth-oauth2 (>= 1.3.1)
|
||||||
|
omniauth-oauth (1.1.0)
|
||||||
|
oauth
|
||||||
|
omniauth (~> 1.0)
|
||||||
|
omniauth-oauth2 (1.4.0)
|
||||||
|
oauth2 (~> 1.0)
|
||||||
|
omniauth (~> 1.2)
|
||||||
|
omniauth-twitter (1.2.1)
|
||||||
|
json (~> 1.3)
|
||||||
|
omniauth-oauth (~> 1.1)
|
||||||
puma (3.6.0)
|
puma (3.6.0)
|
||||||
rack (2.0.1)
|
rack (2.0.1)
|
||||||
rack-test (0.6.3)
|
rack-test (0.6.3)
|
||||||
|
@ -160,9 +195,13 @@ DEPENDENCIES
|
||||||
bigbluebutton-api-ruby
|
bigbluebutton-api-ruby
|
||||||
byebug
|
byebug
|
||||||
coffee-rails (~> 4.2)
|
coffee-rails (~> 4.2)
|
||||||
|
dotenv-rails
|
||||||
jbuilder (~> 2.5)
|
jbuilder (~> 2.5)
|
||||||
jquery-rails
|
jquery-rails
|
||||||
listen (~> 3.0.5)
|
listen (~> 3.0.5)
|
||||||
|
omniauth
|
||||||
|
omniauth-google-oauth2
|
||||||
|
omniauth-twitter
|
||||||
puma (~> 3.0)
|
puma (~> 3.0)
|
||||||
rails (~> 5.0.0, >= 5.0.0.1)
|
rails (~> 5.0.0, >= 5.0.0.1)
|
||||||
sass-rails (~> 5.0)
|
sass-rails (~> 5.0)
|
||||||
|
@ -175,4 +214,4 @@ DEPENDENCIES
|
||||||
web-console
|
web-console
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
1.13.2
|
1.13.4
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
class ApplicationController < ActionController::Base
|
class ApplicationController < ActionController::Base
|
||||||
protect_from_forgery with: :exception
|
protect_from_forgery with: :exception
|
||||||
|
|
||||||
|
def current_user
|
||||||
|
@current_user ||= User.find_by(id: session[:user_id])
|
||||||
|
end
|
||||||
|
helper_method :current_user
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
class SessionsController < ApplicationController
|
||||||
|
def create
|
||||||
|
@user = User.from_omniauth(request.env['omniauth.auth'])
|
||||||
|
session[:user_id] = @user.id
|
||||||
|
rescue => e
|
||||||
|
logger.error "Error authenticating via omniauth: #{e}"
|
||||||
|
ensure
|
||||||
|
redirect_to root_path
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
if current_user
|
||||||
|
session.delete(:user_id)
|
||||||
|
end
|
||||||
|
redirect_to root_path
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
class User < ApplicationRecord
|
||||||
|
|
||||||
|
def self.from_omniauth(auth_hash)
|
||||||
|
user = find_or_create_by(uid: auth_hash['uid'], provider: auth_hash['provider'])
|
||||||
|
user.name = auth_hash['info']['name']
|
||||||
|
user.save!
|
||||||
|
user
|
||||||
|
end
|
||||||
|
end
|
|
@ -33,3 +33,13 @@
|
||||||
<div id="landing_page_footer_oauth_append">
|
<div id="landing_page_footer_oauth_append">
|
||||||
<p>You can have a personal URL (with recordings) by signing in below</p>
|
<p>You can have a personal URL (with recordings) by signing in below</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<% if current_user.nil? %>
|
||||||
|
<ul>
|
||||||
|
<li><%= link_to 'Twitter', '/auth/twitter' %></li>
|
||||||
|
<li><%= link_to 'Google', '/auth/google' %></li>
|
||||||
|
</ul>
|
||||||
|
<% else %>
|
||||||
|
<div>Hello <%= current_user.name %></div>
|
||||||
|
<%= link_to 'Logout', '/logout' %>
|
||||||
|
<% end %>
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
Rails.application.config.middleware.use OmniAuth::Builder do
|
||||||
|
provider :twitter, ENV['TWITTER_ID'], ENV['TWITTER_SECRET']
|
||||||
|
provider :google_oauth2, ENV['GOOGLE_OAUTH2_ID'], ENV['GOOGLE_OAUTH2_SECRET'],
|
||||||
|
scope: 'profile', access_type: 'online', name: 'google'
|
||||||
|
end
|
|
@ -1,5 +1,7 @@
|
||||||
Rails.application.routes.draw do
|
Rails.application.routes.draw do
|
||||||
get 'meeting(/:id)', to: 'landing#index'
|
get 'meeting(/:id)', to: 'landing#index'
|
||||||
|
get '/auth/:provider/callback', to: 'sessions#create'
|
||||||
|
get '/logout', to: 'sessions#destroy'
|
||||||
|
|
||||||
root to: 'landing#index'
|
root to: 'landing#index'
|
||||||
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
|
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
class CreateUsers < ActiveRecord::Migration[5.0]
|
||||||
|
def change
|
||||||
|
create_table :users do |t|
|
||||||
|
t.string :provider, null: false
|
||||||
|
t.string :uid, null: false
|
||||||
|
t.string :name
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index :users, :provider
|
||||||
|
add_index :users, :uid
|
||||||
|
add_index :users, [:provider, :uid], unique: true
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,26 @@
|
||||||
|
# This file is auto-generated from the current state of the database. Instead
|
||||||
|
# of editing this file, please use the migrations feature of Active Record to
|
||||||
|
# incrementally modify your database, and then regenerate this schema definition.
|
||||||
|
#
|
||||||
|
# Note that this schema.rb definition is the authoritative source for your
|
||||||
|
# database schema. If you need to create the application database on another
|
||||||
|
# system, you should be using db:schema:load, not running all the migrations
|
||||||
|
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
||||||
|
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
||||||
|
#
|
||||||
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
|
ActiveRecord::Schema.define(version: 20161017160526) do
|
||||||
|
|
||||||
|
create_table "users", force: :cascade do |t|
|
||||||
|
t.string "provider", null: false
|
||||||
|
t.string "uid", null: false
|
||||||
|
t.string "name"
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
|
t.index ["provider", "uid"], name: "index_users_on_provider_and_uid", unique: true
|
||||||
|
t.index ["provider"], name: "index_users_on_provider"
|
||||||
|
t.index ["uid"], name: "index_users_on_uid"
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,24 @@
|
||||||
|
version: '2'
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- '80:80'
|
||||||
|
volumes:
|
||||||
|
- '.:/usr/src/app'
|
||||||
|
- '~/.ssh:/root/.ssh/'
|
||||||
|
volumes_from:
|
||||||
|
- gem_cache
|
||||||
|
expose:
|
||||||
|
- '3001'
|
||||||
|
working_dir: '/usr/src/app'
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
|
command: bundle exec rails s -p 80 -b '0.0.0.0'
|
||||||
|
depends_on:
|
||||||
|
- gem_cache
|
||||||
|
gem_cache:
|
||||||
|
image: ruby:2.3.1
|
||||||
|
command: bin/true
|
||||||
|
volumes:
|
||||||
|
- /usr/local/bundle
|
|
@ -0,0 +1,4 @@
|
||||||
|
TWITTER_ID=
|
||||||
|
TWITTER_SECRET=
|
||||||
|
GOOGLE_OAUTH2_ID=
|
||||||
|
GOOGLE_OAUTH2_SECRET=
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||||
|
|
||||||
|
one:
|
||||||
|
provider: MyString
|
||||||
|
uid: MyString
|
||||||
|
name: MyString
|
||||||
|
|
||||||
|
two:
|
||||||
|
provider: MyString
|
||||||
|
uid: MyString
|
||||||
|
name: MyString
|
|
@ -0,0 +1,7 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class UserTest < ActiveSupport::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
Loading…
Reference in New Issue