From f67a78d9906fdd6a96d394108620052a5d7488ae Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 01:36:53 +0200 Subject: [PATCH 01/20] upd gemfile --- Gemfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 743b6e2..58c6ca8 100644 --- a/Gemfile +++ b/Gemfile @@ -19,6 +19,9 @@ gem 'formtastic-bootstrap' gem 'client_side_validations' gem 'client_side_validations-formtastic' +gem 'devise' +gem 'omniauth' +gem 'omniauth-vkontakte' # Gems used only for assets and not required # in production environments by default. group :assets do @@ -51,4 +54,4 @@ gem 'jquery-rails' group :development do gem 'annotate' -end \ No newline at end of file +end From 88e0658d54ab9999e1188c953a2bc63ad8ffb5ef Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 01:48:05 +0200 Subject: [PATCH 02/20] g_all_for_user --- Gemfile.lock | 13 ++++ app/assets/javascripts/users.js.coffee | 3 + app/assets/stylesheets/scaffolds.css.scss | 69 +++++++++++++++++ app/assets/stylesheets/users.css.scss | 3 + app/controllers/users_controller.rb | 92 +++++++++++++++++++++++ app/helpers/users_helper.rb | 2 + app/models/user.rb | 3 + app/views/users/_form.html.haml | 46 ++++++++++++ app/views/users/edit.html.haml | 7 ++ app/views/users/index.html.haml | 41 ++++++++++ app/views/users/new.html.haml | 5 ++ app/views/users/show.html.haml | 42 +++++++++++ config/routes.rb | 3 + db/migrate/20130130234423_create_users.rb | 20 +++++ 14 files changed, 349 insertions(+) create mode 100644 app/assets/javascripts/users.js.coffee create mode 100644 app/assets/stylesheets/scaffolds.css.scss create mode 100644 app/assets/stylesheets/users.css.scss create mode 100644 app/controllers/users_controller.rb create mode 100644 app/helpers/users_helper.rb create mode 100644 app/models/user.rb create mode 100644 app/views/users/_form.html.haml create mode 100644 app/views/users/edit.html.haml create mode 100644 app/views/users/index.html.haml create mode 100644 app/views/users/new.html.haml create mode 100644 app/views/users/show.html.haml create mode 100644 db/migrate/20130130234423_create_users.rb diff --git a/Gemfile.lock b/Gemfile.lock index c46848b..fca8600 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -125,6 +125,16 @@ GEM multi_json (~> 1.0) rack (~> 1.2) oj (1.4.7) + omniauth (1.1.1) + hashie (~> 1.2) + rack + omniauth-oauth2 (1.1.1) + oauth2 (~> 0.8.0) + omniauth (~> 1.0) + omniauth-vkontakte (1.2.0) + multi_json + omniauth (~> 1.1.0) + omniauth-oauth2 (~> 1.0) orm_adapter (0.4.0) pg (0.14.1) polyamorous (0.5.0) @@ -205,10 +215,13 @@ DEPENDENCIES client_side_validations client_side_validations-formtastic coffee-rails (~> 3.2.1) + devise formtastic formtastic-bootstrap haml-rails jquery-rails + omniauth + omniauth-vkontakte pg rails (= 3.2.11) russian diff --git a/app/assets/javascripts/users.js.coffee b/app/assets/javascripts/users.js.coffee new file mode 100644 index 0000000..7615679 --- /dev/null +++ b/app/assets/javascripts/users.js.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ diff --git a/app/assets/stylesheets/scaffolds.css.scss b/app/assets/stylesheets/scaffolds.css.scss new file mode 100644 index 0000000..6ec6a8f --- /dev/null +++ b/app/assets/stylesheets/scaffolds.css.scss @@ -0,0 +1,69 @@ +body { + background-color: #fff; + color: #333; + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; +} + +p, ol, ul, td { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; +} + +pre { + background-color: #eee; + padding: 10px; + font-size: 11px; +} + +a { + color: #000; + &:visited { + color: #666; + } + &:hover { + color: #fff; + background-color: #000; + } +} + +div { + &.field, &.actions { + margin-bottom: 10px; + } +} + +#notice { + color: green; +} + +.field_with_errors { + padding: 2px; + background-color: red; + display: table; +} + +#error_explanation { + width: 450px; + border: 2px solid red; + padding: 7px; + padding-bottom: 0; + margin-bottom: 20px; + background-color: #f0f0f0; + h2 { + text-align: left; + font-weight: bold; + padding: 5px 5px 5px 15px; + font-size: 12px; + margin: -7px; + margin-bottom: 0px; + background-color: #c00; + color: #fff; + } + ul li { + font-size: 12px; + list-style: square; + } +} diff --git a/app/assets/stylesheets/users.css.scss b/app/assets/stylesheets/users.css.scss new file mode 100644 index 0000000..31a2eac --- /dev/null +++ b/app/assets/stylesheets/users.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Users controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb new file mode 100644 index 0000000..cf12efe --- /dev/null +++ b/app/controllers/users_controller.rb @@ -0,0 +1,92 @@ +class UsersController < ApplicationController + # GET /users + # GET /users.json + def index + @users = User.all + + respond_to do |format| + format.html # index.html.erb + format.json { render json: @users } + end + end + + # GET /users/1 + # GET /users/1.json + def show + @user = User.find(params[:id]) + + respond_to do |format| + format.html # show.html.erb + format.json { render json: @user } + end + end + + # GET /users/new + # GET /users/new.json + def new + @user = User.new + + respond_to do |format| + format.html # new.html.erb + format.json { render json: @user } + end + end + + # GET /users/1/edit + def edit + @user = User.find(params[:id]) + end + + # POST /users + # POST /users.json + def create + @user = User.new(user_params) + + respond_to do |format| + if @user.save + format.html { redirect_to @user, notice: 'User was successfully created.' } + format.json { render json: @user, status: :created, location: @user } + else + format.html { render action: "new" } + format.json { render json: @user.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /users/1 + # PATCH/PUT /users/1.json + def update + @user = User.find(params[:id]) + + respond_to do |format| + if @user.update_attributes(user_params) + format.html { redirect_to @user, notice: 'User was successfully updated.' } + format.json { head :no_content } + else + format.html { render action: "edit" } + format.json { render json: @user.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /users/1 + # DELETE /users/1.json + def destroy + @user = User.find(params[:id]) + @user.destroy + + respond_to do |format| + format.html { redirect_to users_url } + format.json { head :no_content } + end + end + + private + + # Use this method to whitelist the permissible parameters. Example: + # params.require(:person).permit(:name, :age) + # Also, you can specialize this method with per-user checking of permissible attributes. + def user_params + params.require(:user).permit(:email, :gender, :middlename, :name, :nickname, :phonenumber, :provider, :slogan, :surname, :urlphoto, :urlprofile, :username) + end +end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb new file mode 100644 index 0000000..2310a24 --- /dev/null +++ b/app/helpers/users_helper.rb @@ -0,0 +1,2 @@ +module UsersHelper +end diff --git a/app/models/user.rb b/app/models/user.rb new file mode 100644 index 0000000..d27cca3 --- /dev/null +++ b/app/models/user.rb @@ -0,0 +1,3 @@ +class User < ActiveRecord::Base + attr_accessible :email, :gender, :middlename, :name, :nickname, :phonenumber, :provider, :slogan, :surname, :urlphoto, :urlprofile, :username +end diff --git a/app/views/users/_form.html.haml b/app/views/users/_form.html.haml new file mode 100644 index 0000000..c8663f3 --- /dev/null +++ b/app/views/users/_form.html.haml @@ -0,0 +1,46 @@ += form_for @user do |f| + - if @user.errors.any? + #error_explanation + %h2= "#{pluralize(@user.errors.count, "error")} prohibited this user from being saved:" + %ul + - @user.errors.full_messages.each do |msg| + %li= msg + + .field + = f.label :gender + = f.text_field :gender + .field + = f.label :username + = f.text_field :username + .field + = f.label :nickname + = f.text_field :nickname + .field + = f.label :provider + = f.text_field :provider + .field + = f.label :surname + = f.text_field :surname + .field + = f.label :name + = f.text_field :name + .field + = f.label :middlename + = f.text_field :middlename + .field + = f.label :phonenumber + = f.number_field :phonenumber + .field + = f.label :email + = f.text_field :email + .field + = f.label :urlprofile + = f.text_field :urlprofile + .field + = f.label :urlphoto + = f.text_field :urlphoto + .field + = f.label :slogan + = f.text_field :slogan + .actions + = f.submit 'Save' diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml new file mode 100644 index 0000000..44f7526 --- /dev/null +++ b/app/views/users/edit.html.haml @@ -0,0 +1,7 @@ +%h1 Editing user + += render 'form' + += link_to 'Show', @user +\| += link_to 'Back', users_path diff --git a/app/views/users/index.html.haml b/app/views/users/index.html.haml new file mode 100644 index 0000000..80105d9 --- /dev/null +++ b/app/views/users/index.html.haml @@ -0,0 +1,41 @@ +%h1 Listing users + +%table + %tr + %th Gender + %th Username + %th Nickname + %th Provider + %th Surname + %th Name + %th Middlename + %th Phonenumber + %th Email + %th Urlprofile + %th Urlphoto + %th Slogan + %th + %th + %th + + - @users.each do |user| + %tr + %td= user.gender + %td= user.username + %td= user.nickname + %td= user.provider + %td= user.surname + %td= user.name + %td= user.middlename + %td= user.phonenumber + %td= user.email + %td= user.urlprofile + %td= user.urlphoto + %td= user.slogan + %td= link_to 'Show', user + %td= link_to 'Edit', edit_user_path(user) + %td= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } + +%br + += link_to 'New User', new_user_path diff --git a/app/views/users/new.html.haml b/app/views/users/new.html.haml new file mode 100644 index 0000000..7b9e858 --- /dev/null +++ b/app/views/users/new.html.haml @@ -0,0 +1,5 @@ +%h1 New user + += render 'form' + += link_to 'Back', users_path diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml new file mode 100644 index 0000000..a2a6ab5 --- /dev/null +++ b/app/views/users/show.html.haml @@ -0,0 +1,42 @@ +%p#notice= notice + +%p + %b Gender: + = @user.gender +%p + %b Username: + = @user.username +%p + %b Nickname: + = @user.nickname +%p + %b Provider: + = @user.provider +%p + %b Surname: + = @user.surname +%p + %b Name: + = @user.name +%p + %b Middlename: + = @user.middlename +%p + %b Phonenumber: + = @user.phonenumber +%p + %b Email: + = @user.email +%p + %b Urlprofile: + = @user.urlprofile +%p + %b Urlphoto: + = @user.urlphoto +%p + %b Slogan: + = @user.slogan + += link_to 'Edit', edit_user_path(@user) +\| += link_to 'Back', users_path diff --git a/config/routes.rb b/config/routes.rb index d5895dc..3b1051a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,8 @@ KupiProgulku::Application.routes.draw do + resources :users + + resources :lots do resources :bets end diff --git a/db/migrate/20130130234423_create_users.rb b/db/migrate/20130130234423_create_users.rb new file mode 100644 index 0000000..a1d1035 --- /dev/null +++ b/db/migrate/20130130234423_create_users.rb @@ -0,0 +1,20 @@ +class CreateUsers < ActiveRecord::Migration + def change + create_table :users do |t| + t.string :gender + t.string :username + t.string :nickname + t.string :provider + t.string :surname + t.string :name + t.string :middlename + t.integer :phonenumber + t.string :email + t.string :urlprofile + t.string :urlphoto + t.string :slogan + + t.timestamps + end + end +end From 1387369f4cdce451e9c1f9322bacfa4005970e70 Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 01:50:30 +0200 Subject: [PATCH 03/20] g_devise_for_user --- app/models/user.rb | 8 +++ config/routes.rb | 2 + .../20130130234924_add_devise_to_users.rb | 53 +++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 db/migrate/20130130234924_add_devise_to_users.rb diff --git a/app/models/user.rb b/app/models/user.rb index d27cca3..20d2353 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,3 +1,11 @@ class User < ActiveRecord::Base + # Include default devise modules. Others available are: + # :token_authenticatable, :confirmable, + # :lockable, :timeoutable and :omniauthable + devise :database_authenticatable, :registerable, + :recoverable, :rememberable, :trackable, :validatable + + # Setup accessible (or protected) attributes for your model + attr_accessible :email, :password, :password_confirmation, :remember_me attr_accessible :email, :gender, :middlename, :name, :nickname, :phonenumber, :provider, :slogan, :surname, :urlphoto, :urlprofile, :username end diff --git a/config/routes.rb b/config/routes.rb index 3b1051a..7824a59 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,7 @@ KupiProgulku::Application.routes.draw do + devise_for :users + resources :users diff --git a/db/migrate/20130130234924_add_devise_to_users.rb b/db/migrate/20130130234924_add_devise_to_users.rb new file mode 100644 index 0000000..98ae688 --- /dev/null +++ b/db/migrate/20130130234924_add_devise_to_users.rb @@ -0,0 +1,53 @@ +class AddDeviseToUsers < ActiveRecord::Migration + def self.up + change_table(:users) do |t| + ## Database authenticatable + t.string :email, :null => false, :default => "" + t.string :encrypted_password, :null => false, :default => "" + + ## Recoverable + t.string :reset_password_token + t.datetime :reset_password_sent_at + + ## Rememberable + t.datetime :remember_created_at + + ## Trackable + t.integer :sign_in_count, :default => 0 + t.datetime :current_sign_in_at + t.datetime :last_sign_in_at + t.string :current_sign_in_ip + t.string :last_sign_in_ip + + ## Confirmable + # t.string :confirmation_token + # t.datetime :confirmed_at + # t.datetime :confirmation_sent_at + # t.string :unconfirmed_email # Only if using reconfirmable + + ## Lockable + # t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts + # t.string :unlock_token # Only if unlock strategy is :email or :both + # t.datetime :locked_at + + ## Token authenticatable + # t.string :authentication_token + + + # Uncomment below if timestamps were not included in your original model. + # t.timestamps + end + + add_index :users, :email, :unique => true + add_index :users, :reset_password_token, :unique => true + # add_index :users, :confirmation_token, :unique => true + # add_index :users, :unlock_token, :unique => true + # add_index :users, :authentication_token, :unique => true + end + + def self.down + # By default, we don't want to make any assumption about how to roll back a migration when your + # model already existed. Please edit below which fields you would like to remove in this migration. + raise ActiveRecord::IrreversibleMigration + end +end From a92298e207f7d4e02845ad2fcaa2df56524ba5f5 Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 01:52:32 +0200 Subject: [PATCH 04/20] upd_user_model --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 20d2353..fcbad71 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -3,7 +3,7 @@ class User < ActiveRecord::Base # :token_authenticatable, :confirmable, # :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, - :recoverable, :rememberable, :trackable, :validatable + :recoverable, :rememberable, :trackable, :validatable, :omniauthable # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation, :remember_me From 3fdef062079f281b883e1e6021dd63f15ac1cf7c Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 01:55:35 +0200 Subject: [PATCH 05/20] g_cntr_user_omn --- app/assets/javascripts/users/omniauth_callbacks.js.coffee | 3 +++ app/assets/stylesheets/users/omniauth_callbacks.css.scss | 3 +++ app/controllers/users/omniauth_callbacks_controller.rb | 4 ++++ app/helpers/users/omniauth_callbacks_helper.rb | 2 ++ app/views/users/omniauth_callbacks/vkontakte.html.haml | 2 ++ config/routes.rb | 2 ++ 6 files changed, 16 insertions(+) create mode 100644 app/assets/javascripts/users/omniauth_callbacks.js.coffee create mode 100644 app/assets/stylesheets/users/omniauth_callbacks.css.scss create mode 100644 app/controllers/users/omniauth_callbacks_controller.rb create mode 100644 app/helpers/users/omniauth_callbacks_helper.rb create mode 100644 app/views/users/omniauth_callbacks/vkontakte.html.haml diff --git a/app/assets/javascripts/users/omniauth_callbacks.js.coffee b/app/assets/javascripts/users/omniauth_callbacks.js.coffee new file mode 100644 index 0000000..7615679 --- /dev/null +++ b/app/assets/javascripts/users/omniauth_callbacks.js.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ diff --git a/app/assets/stylesheets/users/omniauth_callbacks.css.scss b/app/assets/stylesheets/users/omniauth_callbacks.css.scss new file mode 100644 index 0000000..155643a --- /dev/null +++ b/app/assets/stylesheets/users/omniauth_callbacks.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Users::OmniauthCallbacks controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/users/omniauth_callbacks_controller.rb b/app/controllers/users/omniauth_callbacks_controller.rb new file mode 100644 index 0000000..3c0373d --- /dev/null +++ b/app/controllers/users/omniauth_callbacks_controller.rb @@ -0,0 +1,4 @@ +class Users::OmniauthCallbacksController < ApplicationController + def vkontakte + end +end diff --git a/app/helpers/users/omniauth_callbacks_helper.rb b/app/helpers/users/omniauth_callbacks_helper.rb new file mode 100644 index 0000000..7c6e5e0 --- /dev/null +++ b/app/helpers/users/omniauth_callbacks_helper.rb @@ -0,0 +1,2 @@ +module Users::OmniauthCallbacksHelper +end diff --git a/app/views/users/omniauth_callbacks/vkontakte.html.haml b/app/views/users/omniauth_callbacks/vkontakte.html.haml new file mode 100644 index 0000000..39099e0 --- /dev/null +++ b/app/views/users/omniauth_callbacks/vkontakte.html.haml @@ -0,0 +1,2 @@ +%h1 Users::OmniauthCallbacks#vkontakte +%p Find me in app/views/users/omniauth_callbacks/vkontakte.html.haml \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 7824a59..34c0a35 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,7 @@ KupiProgulku::Application.routes.draw do + get "omniauth_callbacks/vkontakte" + devise_for :users resources :users From f30033ca76ce0ad18a81ecd9569a08a8cfc4e119 Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 01:58:06 +0200 Subject: [PATCH 06/20] upd_routes --- config/routes.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index 34c0a35..8197762 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,8 +1,11 @@ KupiProgulku::Application.routes.draw do + devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } + resources :users, :only => [:index, :destroy] + get "omniauth_callbacks/vkontakte" - devise_for :users + #devise_for :users resources :users From 651ebaa053195d1158ceab7f812b26eb40c0077f Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 02:02:00 +0200 Subject: [PATCH 07/20] upd_migr_user --- db/migrate/20130130234423_create_users.rb | 1 - db/schema.rb | 31 ++++++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/db/migrate/20130130234423_create_users.rb b/db/migrate/20130130234423_create_users.rb index a1d1035..10e91b1 100644 --- a/db/migrate/20130130234423_create_users.rb +++ b/db/migrate/20130130234423_create_users.rb @@ -9,7 +9,6 @@ def change t.string :name t.string :middlename t.integer :phonenumber - t.string :email t.string :urlprofile t.string :urlphoto t.string :slogan diff --git a/db/schema.rb b/db/schema.rb index be63c21..fc80d72 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20130107165259) do +ActiveRecord::Schema.define(:version => 20130130234924) do create_table "active_admin_comments", :force => true do |t| t.string "resource_id", :null => false @@ -78,4 +78,33 @@ t.datetime "updated_at", :null => false end + create_table "users", :force => true do |t| + t.string "gender" + t.string "username" + t.string "nickname" + t.string "provider" + t.string "surname" + t.string "name" + t.string "middlename" + t.integer "phonenumber" + t.string "urlprofile" + t.string "urlphoto" + t.string "slogan" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "email", :default => "", :null => false + t.string "encrypted_password", :default => "", :null => false + t.string "reset_password_token" + t.datetime "reset_password_sent_at" + t.datetime "remember_created_at" + t.integer "sign_in_count", :default => 0 + t.datetime "current_sign_in_at" + t.datetime "last_sign_in_at" + t.string "current_sign_in_ip" + t.string "last_sign_in_ip" + end + + add_index "users", ["email"], :name => "index_users_on_email", :unique => true + add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true + end From f137fc3d562288dd15bd556f53fa70c4988eb217 Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 02:09:03 +0200 Subject: [PATCH 08/20] upd_layout --- app/views/layouts/application.html.haml | 41 ++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 3370dea..7fef385 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -4,8 +4,47 @@ %title Купи Прогулку = stylesheet_link_tag "application", :media => "all" = javascript_include_tag "application" + %meta(charset="utf-8") + %meta(name="viewport" content="width=device-width, initial-scale=1.0") + %title= content_for?(:title) ? yield(:title) : "Authproviders" = csrf_meta_tags + / Le HTML5 shim, for IE6-8 support of HTML elements + /[if lt IE 9] + = javascript_include_tag "http://html5shim.googlecode.com/svn/trunk/html5.js" + = stylesheet_link_tag "application", :media => "all" + %link(href="images/favicon.ico" rel="shortcut icon") + %link(href="images/apple-touch-icon.png" rel="apple-touch-icon") + %link(href="images/apple-touch-icon-72x72.png" rel="apple-touch-icon" sizes="72x72") + %link(href="images/apple-touch-icon-114x114.png" rel="apple-touch-icon" sizes="114x114") %body .container = bootstrap_flash - = yield \ No newline at end of file + = yield + .navbar.navbar-fixed-top + .navbar-inner + .container + %a.btn.btn-navbar(data-target=".nav-collapse" data-toggle="collapse") + %span.icon-bar + %span.icon-bar + %span.icon-bar + %a.brand(href="#") Authproviders + .container.nav-collapse + %ul.nav + - if user_signed_in? + %li= link_to "#{current_user.username} (#{current_user.provider})", current_user.url + %li= link_to "Sign out", destroy_user_session_path, :method => :delete + .container + .content + .row + .span9 + = yield + .span3 + .well.sidebar-nav + %h3 Providers + %ul.nav.nav-list + - if !user_signed_in? + %li= link_to "Sign in with Vkontakte", user_omniauth_authorize_path(:vkontakte) + + %footer + %p © Company 2012 + = javascript_include_tag "application" From d96b79e297bb33365a48d1ac6349e1a6be2e13a2 Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 02:11:47 +0200 Subject: [PATCH 09/20] upd_devise_conf --- config/initializers/devise.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index ad83db7..a9da34e 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -5,7 +5,7 @@ # Configure the e-mail address which will be shown in Devise::Mailer, # note that it will be overwritten if you use your own mailer class with default "from" parameter. config.mailer_sender = "please-change-me-at-config-initializers-devise@example.com" - + config.omniauth :vkontakte, 'APP_ID', 'APP_SECRET' # Configure the class responsible to send e-mails. # config.mailer = "Devise::Mailer" @@ -229,4 +229,4 @@ # When using omniauth, Devise cannot automatically set Omniauth path, # so you need to do it manually. For the users scope, it would be: # config.omniauth_path_prefix = "/my_engine/users/auth" -end \ No newline at end of file +end From a1b042ad31379cb953fb9baeec554ffbed7bde8c Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 02:12:39 +0200 Subject: [PATCH 10/20] upd_user_vk_model --- app/models/user.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/models/user.rb b/app/models/user.rb index fcbad71..c0cedba 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -8,4 +8,12 @@ class User < ActiveRecord::Base # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation, :remember_me attr_accessible :email, :gender, :middlename, :name, :nickname, :phonenumber, :provider, :slogan, :surname, :urlphoto, :urlprofile, :username + + def self.find_for_vkontakte_oauth access_token + if user = User.where(:url => access_token.info.urls.Vkontakte).first + user + else + User.create!(:provider => access_token.provider, :url => access_token.info.urls.Vkontakte, :username => access_token.info.name, :nickname => access_token.extra.raw_info.domain, :email => access_token.extra.raw_info.domain+'.com', :password => Devise.friendly_token[0,20]) + end + end end From ab54d9ea7d8ec1cbc87ca44341929f25731b48ce Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 02:14:15 +0200 Subject: [PATCH 11/20] upd_users_vk --- app/controllers/users/omniauth_callbacks_controller.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/controllers/users/omniauth_callbacks_controller.rb b/app/controllers/users/omniauth_callbacks_controller.rb index 3c0373d..0738283 100644 --- a/app/controllers/users/omniauth_callbacks_controller.rb +++ b/app/controllers/users/omniauth_callbacks_controller.rb @@ -1,4 +1,12 @@ class Users::OmniauthCallbacksController < ApplicationController def vkontakte + = User.find_for_vkontakte_oauth request.env["omniauth.auth"] + if .persisted? + flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Vkontakte" + sign_in_and_redirect , :event => :authentication + else + flash[:notice] = "authentication error" + redirect_to root_path + end end end From 7463819313379d3dd514a4241153d2751f8a166b Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 02:21:39 +0200 Subject: [PATCH 12/20] upd_bootstrap_css --- app/assets/stylesheets/bootstrap_and_overrides.css | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/bootstrap_and_overrides.css b/app/assets/stylesheets/bootstrap_and_overrides.css index 08a1ea8..36d2a4d 100644 --- a/app/assets/stylesheets/bootstrap_and_overrides.css +++ b/app/assets/stylesheets/bootstrap_and_overrides.css @@ -5,9 +5,13 @@ To use Glyphicons sprites instead of Font Awesome, replace with "require twitter-bootstrap-static/sprites" =require twitter-bootstrap-static/fontawesome */ - +body { + padding-top: 60px; + padding-left: 30px; + padding-right: 30px; +} .alert { width: 62%; text-align: center; margin: 10px auto auto; -} \ No newline at end of file +} From c36dbdfff29cb1c0e66aa15f82de152d9c409dc9 Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 02:36:33 +0200 Subject: [PATCH 13/20] upd --- app/assets/images/vk.png | Bin 9649 -> 6291 bytes app/views/layouts/application.html.haml | 16 ++++++++-------- app/views/pages/main.html.haml | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/assets/images/vk.png b/app/assets/images/vk.png index 26eb72acd95a3a5e71288bd27899a53bd66ed62f..52cce79b0a270e42554101def896243a143bb526 100644 GIT binary patch literal 6291 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 literal 9649 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 O0UD2VR7#YdhW;PTeqZze diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 7fef385..d425d13 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -4,10 +4,8 @@ %title Купи Прогулку = stylesheet_link_tag "application", :media => "all" = javascript_include_tag "application" - %meta(charset="utf-8") - %meta(name="viewport" content="width=device-width, initial-scale=1.0") - %title= content_for?(:title) ? yield(:title) : "Authproviders" = csrf_meta_tags + / Le HTML5 shim, for IE6-8 support of HTML elements /[if lt IE 9] = javascript_include_tag "http://html5shim.googlecode.com/svn/trunk/html5.js" @@ -16,10 +14,11 @@ %link(href="images/apple-touch-icon.png" rel="apple-touch-icon") %link(href="images/apple-touch-icon-72x72.png" rel="apple-touch-icon" sizes="72x72") %link(href="images/apple-touch-icon-114x114.png" rel="apple-touch-icon" sizes="114x114") + %body - .container - = bootstrap_flash - = yield + .container + = bootstrap_flash + .navbar.navbar-fixed-top .navbar-inner .container @@ -27,7 +26,8 @@ %span.icon-bar %span.icon-bar %span.icon-bar - %a.brand(href="#") Authproviders + %a.brand(href="#") Купи Прогулку + .container.nav-collapse %ul.nav - if user_signed_in? @@ -40,7 +40,7 @@ = yield .span3 .well.sidebar-nav - %h3 Providers + %h3 Авторизация %ul.nav.nav-list - if !user_signed_in? %li= link_to "Sign in with Vkontakte", user_omniauth_authorize_path(:vkontakte) diff --git a/app/views/pages/main.html.haml b/app/views/pages/main.html.haml index 0fb17b8..975e854 100644 --- a/app/views/pages/main.html.haml +++ b/app/views/pages/main.html.haml @@ -1,3 +1,3 @@ %h1 С кем хочешь погулять? = link_to "Man", men_path -= link_to "Woman", women_path \ No newline at end of file += link_to "Woman", women_path From 84314216d4ebbab1453aa06591c1a7f13cc33d32 Mon Sep 17 00:00:00 2001 From: Apophis Date: Thu, 31 Jan 2013 02:49:21 +0200 Subject: [PATCH 14/20] add_localtunnel --- Gemfile | 1 + Gemfile.lock | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/Gemfile b/Gemfile index 58c6ca8..aa5debe 100644 --- a/Gemfile +++ b/Gemfile @@ -54,4 +54,5 @@ gem 'jquery-rails' group :development do gem 'annotate' + gem 'localtunnel' end diff --git a/Gemfile.lock b/Gemfile.lock index fca8600..a5df1e9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -106,6 +106,10 @@ GEM kaminari (0.14.1) actionpack (>= 3.0.0) activesupport (>= 3.0.0) + localtunnel (0.3) + json (>= 1.2.4) + net-ssh (>= 2.0.22) + net-ssh-gateway (>= 1.0.1) mail (2.4.4) i18n (>= 0.4.0) mime-types (~> 1.16) @@ -118,6 +122,9 @@ GEM mime-types (1.19) multi_json (1.5.0) multipart-post (1.1.5) + net-ssh (2.6.3) + net-ssh-gateway (1.1.0) + net-ssh (>= 1.99.1) oauth2 (0.8.0) faraday (~> 0.8) httpauth (~> 0.1) @@ -220,6 +227,7 @@ DEPENDENCIES formtastic-bootstrap haml-rails jquery-rails + localtunnel omniauth omniauth-vkontakte pg From 093b8380ce9a6a97bae17b80e877b7b5fe0600ac Mon Sep 17 00:00:00 2001 From: Apophis Date: Sat, 2 Feb 2013 08:55:47 +0200 Subject: [PATCH 15/20] bug_fix_simple_auth_reg --- Gemfile | 2 +- Gemfile.lock | 2 + app/assets/stylesheets/scaffolds.css.scss | 69 ------------------- .../users/omniauth_callbacks_controller.rb | 8 +-- app/models/user.rb | 8 +-- app/views/layouts/application.html.haml | 8 +-- app/views/users/_form.html.haml | 2 +- app/views/users/index.html.haml | 2 +- db/migrate/20130130234423_create_users.rb | 2 +- 9 files changed, 18 insertions(+), 85 deletions(-) delete mode 100644 app/assets/stylesheets/scaffolds.css.scss diff --git a/Gemfile b/Gemfile index aa5debe..497e95b 100644 --- a/Gemfile +++ b/Gemfile @@ -36,7 +36,7 @@ group :assets do end gem 'jquery-rails' - +gem "rb-readline" # To use ActiveModel has_secure_password # gem 'bcrypt-ruby', '~> 3.0.0' diff --git a/Gemfile.lock b/Gemfile.lock index a5df1e9..0ec63fd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -170,6 +170,7 @@ GEM rdoc (~> 3.4) thor (>= 0.14.6, < 2.0) rake (10.0.3) + rb-readline (0.4.2) rdoc (3.12) json (~> 1.4) responders (0.9.3) @@ -232,6 +233,7 @@ DEPENDENCIES omniauth-vkontakte pg rails (= 3.2.11) + rb-readline russian sass-rails (~> 3.2.3) sqlite3 diff --git a/app/assets/stylesheets/scaffolds.css.scss b/app/assets/stylesheets/scaffolds.css.scss deleted file mode 100644 index 6ec6a8f..0000000 --- a/app/assets/stylesheets/scaffolds.css.scss +++ /dev/null @@ -1,69 +0,0 @@ -body { - background-color: #fff; - color: #333; - font-family: verdana, arial, helvetica, sans-serif; - font-size: 13px; - line-height: 18px; -} - -p, ol, ul, td { - font-family: verdana, arial, helvetica, sans-serif; - font-size: 13px; - line-height: 18px; -} - -pre { - background-color: #eee; - padding: 10px; - font-size: 11px; -} - -a { - color: #000; - &:visited { - color: #666; - } - &:hover { - color: #fff; - background-color: #000; - } -} - -div { - &.field, &.actions { - margin-bottom: 10px; - } -} - -#notice { - color: green; -} - -.field_with_errors { - padding: 2px; - background-color: red; - display: table; -} - -#error_explanation { - width: 450px; - border: 2px solid red; - padding: 7px; - padding-bottom: 0; - margin-bottom: 20px; - background-color: #f0f0f0; - h2 { - text-align: left; - font-weight: bold; - padding: 5px 5px 5px 15px; - font-size: 12px; - margin: -7px; - margin-bottom: 0px; - background-color: #c00; - color: #fff; - } - ul li { - font-size: 12px; - list-style: square; - } -} diff --git a/app/controllers/users/omniauth_callbacks_controller.rb b/app/controllers/users/omniauth_callbacks_controller.rb index 0738283..74f8335 100644 --- a/app/controllers/users/omniauth_callbacks_controller.rb +++ b/app/controllers/users/omniauth_callbacks_controller.rb @@ -1,9 +1,9 @@ class Users::OmniauthCallbacksController < ApplicationController def vkontakte - = User.find_for_vkontakte_oauth request.env["omniauth.auth"] - if .persisted? - flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Vkontakte" - sign_in_and_redirect , :event => :authentication + user = User.find_for_vkontakte_oauth request.env["omniauth.auth"] + if user.persisted? + #flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Vkontakte" + sign_in_and_redirect user, :event => :authentication else flash[:notice] = "authentication error" redirect_to root_path diff --git a/app/models/user.rb b/app/models/user.rb index c0cedba..827dc3b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -7,13 +7,13 @@ class User < ActiveRecord::Base # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation, :remember_me - attr_accessible :email, :gender, :middlename, :name, :nickname, :phonenumber, :provider, :slogan, :surname, :urlphoto, :urlprofile, :username + attr_accessible :email, :url, :gender, :middlename, :name, :nickname, :phonenumber, :provider, :slogan, :surname, :urlphoto, :urlprofile, :username def self.find_for_vkontakte_oauth access_token - if user = User.where(:url => access_token.info.urls.Vkontakte).first - user + if @user = User.where(:url => access_token.info.urls.Vkontakte).first + @user else - User.create!(:provider => access_token.provider, :url => access_token.info.urls.Vkontakte, :username => access_token.info.name, :nickname => access_token.extra.raw_info.domain, :email => access_token.extra.raw_info.domain+'.com', :password => Devise.friendly_token[0,20]) + User.create!(:provider => access_token.provider, :url => access_token.info.urls.Vkontakte, :username => access_token.info.name, :nickname => access_token.extra.raw_info.domain, :email => access_token.extra.raw_info.domain.to_s + (0...50).map{ ('a'..'z').to_a[rand(26)] }.join + '@vk.com', :password => Devise.friendly_token[0,20]) end end end diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index d425d13..75983ba 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -39,10 +39,10 @@ .span9 = yield .span3 - .well.sidebar-nav - %h3 Авторизация - %ul.nav.nav-list - - if !user_signed_in? + -unless user_signed_in? + .well.sidebar-nav + %h3 Авторизация + %ul.nav.nav-list %li= link_to "Sign in with Vkontakte", user_omniauth_authorize_path(:vkontakte) %footer diff --git a/app/views/users/_form.html.haml b/app/views/users/_form.html.haml index c8663f3..4d003a8 100644 --- a/app/views/users/_form.html.haml +++ b/app/views/users/_form.html.haml @@ -35,7 +35,7 @@ = f.text_field :email .field = f.label :urlprofile - = f.text_field :urlprofile + = f.text_field :url .field = f.label :urlphoto = f.text_field :urlphoto diff --git a/app/views/users/index.html.haml b/app/views/users/index.html.haml index 80105d9..cce489c 100644 --- a/app/views/users/index.html.haml +++ b/app/views/users/index.html.haml @@ -29,7 +29,7 @@ %td= user.middlename %td= user.phonenumber %td= user.email - %td= user.urlprofile + %td= user.url %td= user.urlphoto %td= user.slogan %td= link_to 'Show', user diff --git a/db/migrate/20130130234423_create_users.rb b/db/migrate/20130130234423_create_users.rb index 10e91b1..da9d906 100644 --- a/db/migrate/20130130234423_create_users.rb +++ b/db/migrate/20130130234423_create_users.rb @@ -9,7 +9,7 @@ def change t.string :name t.string :middlename t.integer :phonenumber - t.string :urlprofile + t.string :url t.string :urlphoto t.string :slogan From a11d50d97fa280a6adfac87d1cb396eaf5daa113 Mon Sep 17 00:00:00 2001 From: Apophis Date: Sun, 3 Feb 2013 18:17:06 +0200 Subject: [PATCH 16/20] simple_vkontakte_auth_reg --- .gitignore | 4 +- app/assets/images/images.jpg | Bin 0 -> 2569 bytes app/assets/images/vkontakte-logo.png | Bin 0 -> 5963 bytes .../stylesheets/formtastic_fixes.css.sass | 2 +- .../users/omniauth_callbacks_controller.rb | 7 +-- app/controllers/users_controller.rb | 43 ++++---------- app/models/user.rb | 8 +-- app/views/layouts/application.html.haml | 10 ++-- app/views/users/_form.html.haml | 55 +++++------------- app/views/users/edit.html.haml | 2 +- app/views/users/index.html.haml | 41 ------------- app/views/users/new.html.haml | 5 +- .../omniauth_callbacks/vkontakte.html.haml | 2 - app/views/users/show.html.haml | 42 ------------- config/routes.rb | 8 +-- db/migrate/20130130234423_create_users.rb | 2 - 16 files changed, 45 insertions(+), 186 deletions(-) create mode 100644 app/assets/images/images.jpg create mode 100644 app/assets/images/vkontakte-logo.png delete mode 100644 app/views/users/index.html.haml delete mode 100644 app/views/users/show.html.haml diff --git a/.gitignore b/.gitignore index 5d08725..a4eef28 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,6 @@ /log/*.log /tmp -.idea/ \ No newline at end of file +.idea/ + +/public/assets diff --git a/app/assets/images/images.jpg b/app/assets/images/images.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9aa257957a46b4cbfabc0baadc59c3cb2bdaa041 GIT binary patch literal 2569 zcmZ8jc{JPU8vZ4*U$rJhL?o7`(O6(G zr&?`iI=FU9&<;v1L3Ql=S~tD-%>84Y_q^x4=X;*>yx%$Rch2`7{dqJ2NL(acAORo{ z0DyP_9E}1$0m1?TPzgyGR00ZvLZx5`+2b%7Nu-P%{J1<+4lVQi@*yjVB69+j)j4X){<*uRHOz$~xz+c!wsW^}}RTYdDiD zt15*}JPSF{KkNYj%*V6jQA(1$-e4Xe|L@MTmy|;D;ia{Sb|FefBY-H614}|A0TbY5 zzd01JGxuzKV;QI2_!I{{?(wt^p+?)p#6dwh)Kj8PWxcEH@`%;v#H}pb&NL&iVH6zb z`JqySgU?p5ji}>SH0rWd_~ikG5)%B$%#uuKivHJ{+u_E5Mt)Mo)C-rV;}4t|*R4`q zNZVu|N0l8>C?1epo2g@HXJR#)|W#3IL>lIvf|&5(GG{4KA$PfEOr{tx16*a z+^((AH;Jp+XEz`&Td$p|w>|j`ak7vK?Bw{E2<{9~$ZSS!dmH0}Q|fr3D*;203C|IM+L^ zGWDstR$7q;3RVkR&6;2#obcMT6+TE{ur}SS`-k#r#20zxj$~n^$H(#Mkq; z>x*D@vub??W=sxs7pYg;`q3-YhE@1Youwi{%DH@WR$XZjF_9l!A{Kl*82$cl0bYX ztu3`zctbERth|Itow37>y@C(;k?P9N4bzel5B5v@sv#yWPkzjal=fekM%&+NH79@7 z5YciX5IQ)1GvU;e9N;|F%_&hOJQ+L=|$(G=jm5cdkG;X7)LcH=oG^Isa-hLb?|4l}kJD zA5!J01>7KC^0o7jK^hw4ojE&=~^-d?=M+MH^aQ$()bH7zpqiE+{e*tcmN_vD!OFbd9=IO`@WFxvbZR6eRES(;c8^B z7#0)#%YbJ*#ZwlZLXG&Bf|Nk-ec>tcP~)bkMc!R?W{{bubQG^4^q||Xb30%M?p&1>10T<1#}(e} zKvnM>)pGxwVS|F_(6WV(z+Gj`C;>%yslHtH2e_UXUh)TRxxNdiOkf}f5@fP*KsnXkoYmRwn?fCPWs^Op6 zh1sWLBQzFn%|<)A;c}=(0(_}O?R4g&i<4hU7CVPcE?%B1x?KEQ)BKHH(I^Ia<|DEr zBq+p!6F_db!w#ZWYx)yCPqV5o#m2n=Gaf#NdH*IAH z4)lKiec#i%_!rH@a2lK7G;)p+eO<-Z3eOj&{4hBDME{;{;g#Zg_OVkmCOv!7smJ)q z=Y`~A(s^e>u3KJ1b>Olba?(oIpB#dA6F}u#Jc2><4!PgDOx7`bW#86feF}Ed56Mbx z0rk|e=J}d5^^O|*{5gX4Dan-{Euva0>pF-`0++pmw2R~+Ip5_2dmnyn^Bbsc(P!EG zWu=9pv>O}*RBAiDWjfI*Pzw7Eex!xd`-h#N^k6=bLLxH!AJRFXMsmz=kG^Uwhz zRB$KWSu;PNRLZ?$9JXzH3|~5YP0?th^pI>261Z-1S8md& z0u&~9{R@^ItY5FMFf}e1KlV;sDZ^CDK+2-7t$ea8gRu0XV^95=onnN>wZ)pj&)ODa z?uJUDTJI#HBpEAu$(IfqOcG-vBIfhkP#z+w#3>;|zKDdARZrAE=!sBa7OJ)YGS1E( zD);?&n_KKjf^kXMR?;0I-ec@|ykUGVEInk{46=JBN%^lf-caow{IPSYHYKXpbGC>< zi_zu9DadUXqZ zLmKW3R4MUA;PM*8=cmbMGlmx%FCd0PX$G`Z2YqcL@3`2m=aFK~X9zxi>fNiBFHW!WcU&1)EcB?O4R%A;7XdQNX?_nX7;rgs0`M80n$yriCd L3jRlm9}WKp84`Zm literal 0 HcmV?d00001 diff --git a/app/assets/images/vkontakte-logo.png b/app/assets/images/vkontakte-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ce7f66f1a181e6700376736a8db2d7e3a5d29ede GIT binary patch literal 5963 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 "Vkontakte" + if user sign_in_and_redirect user, :event => :authentication else - flash[:notice] = "authentication error" - redirect_to root_path + session["devise.vkontakte_data"] = request.env["omniauth.auth"] + redirect_to new_user_path end end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index cf12efe..1808a2f 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,34 +1,17 @@ class UsersController < ApplicationController - # GET /users - # GET /users.json - def index - @users = User.all - - respond_to do |format| - format.html # index.html.erb - format.json { render json: @users } - end - end - - # GET /users/1 - # GET /users/1.json - def show - @user = User.find(params[:id]) - - respond_to do |format| - format.html # show.html.erb - format.json { render json: @user } - end - end - # GET /users/new # GET /users/new.json def new - @user = User.new - - respond_to do |format| - format.html # new.html.erb - format.json { render json: @user } + if user_signed_in? + redirect_to "/", notice: 'Already registered' + elsif !session["devise.vkontakte_data"] + redirect_to "/" + else + @user = User.new + respond_to do |format| + format.html + format.json { render json: @user } + end end end @@ -82,11 +65,7 @@ def destroy end private - - # Use this method to whitelist the permissible parameters. Example: - # params.require(:person).permit(:name, :age) - # Also, you can specialize this method with per-user checking of permissible attributes. def user_params - params.require(:user).permit(:email, :gender, :middlename, :name, :nickname, :phonenumber, :provider, :slogan, :surname, :urlphoto, :urlprofile, :username) + params.require(:user).permit(:email, :gender, :middlename, :name, :phonenumber, :slogan, :surname, :urlphoto, :url, :username, :password) end end diff --git a/app/models/user.rb b/app/models/user.rb index 827dc3b..b0c5e2f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -7,13 +7,9 @@ class User < ActiveRecord::Base # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation, :remember_me - attr_accessible :email, :url, :gender, :middlename, :name, :nickname, :phonenumber, :provider, :slogan, :surname, :urlphoto, :urlprofile, :username + attr_accessible :email, :url, :gender, :middlename, :name, :phonenumber, :slogan, :surname, :urlphoto, :username def self.find_for_vkontakte_oauth access_token - if @user = User.where(:url => access_token.info.urls.Vkontakte).first - @user - else - User.create!(:provider => access_token.provider, :url => access_token.info.urls.Vkontakte, :username => access_token.info.name, :nickname => access_token.extra.raw_info.domain, :email => access_token.extra.raw_info.domain.to_s + (0...50).map{ ('a'..'z').to_a[rand(26)] }.join + '@vk.com', :password => Devise.friendly_token[0,20]) - end + @user = User.where(:url => access_token.info.urls.Vkontakte).first end end diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 75983ba..73cb792 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -26,12 +26,13 @@ %span.icon-bar %span.icon-bar %span.icon-bar - %a.brand(href="#") Купи Прогулку + %a.brand(href="/") Купи Прогулку .container.nav-collapse %ul.nav - if user_signed_in? - %li= link_to "#{current_user.username} (#{current_user.provider})", current_user.url + %li= link_to "#{current_user.username} (vkontakte)", current_user.url + %li= link_to "My profile", edit_user_path(current_user) %li= link_to "Sign out", destroy_user_session_path, :method => :delete .container .content @@ -40,10 +41,7 @@ = yield .span3 -unless user_signed_in? - .well.sidebar-nav - %h3 Авторизация - %ul.nav.nav-list - %li= link_to "Sign in with Vkontakte", user_omniauth_authorize_path(:vkontakte) + %li= link_to image_tag('images.jpg'), user_omniauth_authorize_path(:vkontakte) %footer %p © Company 2012 diff --git a/app/views/users/_form.html.haml b/app/views/users/_form.html.haml index 4d003a8..a07eab0 100644 --- a/app/views/users/_form.html.haml +++ b/app/views/users/_form.html.haml @@ -1,46 +1,21 @@ -= form_for @user do |f| += semantic_form_for @user do |f| - if @user.errors.any? #error_explanation %h2= "#{pluralize(@user.errors.count, "error")} prohibited this user from being saved:" %ul - @user.errors.full_messages.each do |msg| %li= msg - - .field - = f.label :gender - = f.text_field :gender - .field - = f.label :username - = f.text_field :username - .field - = f.label :nickname - = f.text_field :nickname - .field - = f.label :provider - = f.text_field :provider - .field - = f.label :surname - = f.text_field :surname - .field - = f.label :name - = f.text_field :name - .field - = f.label :middlename - = f.text_field :middlename - .field - = f.label :phonenumber - = f.number_field :phonenumber - .field - = f.label :email - = f.text_field :email - .field - = f.label :urlprofile - = f.text_field :url - .field - = f.label :urlphoto - = f.text_field :urlphoto - .field - = f.label :slogan - = f.text_field :slogan - .actions - = f.submit 'Save' + = f.inputs do + - hint = "для организаторов, данные не публикуются" + = f.input :username, label: 'Имя на сайте' + = f.input :name, label: 'Ваше имя', :hint => hint + = f.input :surname, label: 'Ваша фамилия', :hint => hint + = f.input :middlename, label: 'Ваше отчество', :hint => hint + = f.input :phonenumber, label: 'Контактный телефон', :hint => hint, :as => :string + = f.input :email, label: 'Ваш имейл', :hint => 'для уведомлений' + = f.input :urlphoto, label: 'Ваше фото' + = f.input :url, label: 'Ваш профайл вконтакте' + = f.input :slogan, label: 'Ваш девиз' + = f.input :password, :include_blank => false + = f.select :gender, [["Male", false], ["Female", true]], label: 'Ваш пол' + = f.action :submit, :as => 'button', label: 'Опубликовать комментарий' diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml index 44f7526..c367bfa 100644 --- a/app/views/users/edit.html.haml +++ b/app/views/users/edit.html.haml @@ -1,4 +1,4 @@ -%h1 Editing user +%h1= current_user.username + ', edit profile' = render 'form' diff --git a/app/views/users/index.html.haml b/app/views/users/index.html.haml deleted file mode 100644 index cce489c..0000000 --- a/app/views/users/index.html.haml +++ /dev/null @@ -1,41 +0,0 @@ -%h1 Listing users - -%table - %tr - %th Gender - %th Username - %th Nickname - %th Provider - %th Surname - %th Name - %th Middlename - %th Phonenumber - %th Email - %th Urlprofile - %th Urlphoto - %th Slogan - %th - %th - %th - - - @users.each do |user| - %tr - %td= user.gender - %td= user.username - %td= user.nickname - %td= user.provider - %td= user.surname - %td= user.name - %td= user.middlename - %td= user.phonenumber - %td= user.email - %td= user.url - %td= user.urlphoto - %td= user.slogan - %td= link_to 'Show', user - %td= link_to 'Edit', edit_user_path(user) - %td= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } - -%br - -= link_to 'New User', new_user_path diff --git a/app/views/users/new.html.haml b/app/views/users/new.html.haml index 7b9e858..8418550 100644 --- a/app/views/users/new.html.haml +++ b/app/views/users/new.html.haml @@ -1,5 +1,8 @@ -%h1 New user +%h1 +%h1='Welcome ' + session["devise.vkontakte_data"]["info"]["first_name"] = render 'form' = link_to 'Back', users_path + + diff --git a/app/views/users/omniauth_callbacks/vkontakte.html.haml b/app/views/users/omniauth_callbacks/vkontakte.html.haml index 39099e0..e69de29 100644 --- a/app/views/users/omniauth_callbacks/vkontakte.html.haml +++ b/app/views/users/omniauth_callbacks/vkontakte.html.haml @@ -1,2 +0,0 @@ -%h1 Users::OmniauthCallbacks#vkontakte -%p Find me in app/views/users/omniauth_callbacks/vkontakte.html.haml \ No newline at end of file diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml deleted file mode 100644 index a2a6ab5..0000000 --- a/app/views/users/show.html.haml +++ /dev/null @@ -1,42 +0,0 @@ -%p#notice= notice - -%p - %b Gender: - = @user.gender -%p - %b Username: - = @user.username -%p - %b Nickname: - = @user.nickname -%p - %b Provider: - = @user.provider -%p - %b Surname: - = @user.surname -%p - %b Name: - = @user.name -%p - %b Middlename: - = @user.middlename -%p - %b Phonenumber: - = @user.phonenumber -%p - %b Email: - = @user.email -%p - %b Urlprofile: - = @user.urlprofile -%p - %b Urlphoto: - = @user.urlphoto -%p - %b Slogan: - = @user.slogan - -= link_to 'Edit', edit_user_path(@user) -\| -= link_to 'Back', users_path diff --git a/config/routes.rb b/config/routes.rb index 8197762..939ec0f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,20 +1,14 @@ KupiProgulku::Application.routes.draw do devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } - resources :users, :only => [:index, :destroy] + resources :users, :only => [:destroy, :edit, :new] get "omniauth_callbacks/vkontakte" - #devise_for :users - - resources :users - - resources :lots do resources :bets end - ActiveAdmin.routes(self) devise_for :admin_users, ActiveAdmin::Devise.config diff --git a/db/migrate/20130130234423_create_users.rb b/db/migrate/20130130234423_create_users.rb index da9d906..0b314c5 100644 --- a/db/migrate/20130130234423_create_users.rb +++ b/db/migrate/20130130234423_create_users.rb @@ -3,8 +3,6 @@ def change create_table :users do |t| t.string :gender t.string :username - t.string :nickname - t.string :provider t.string :surname t.string :name t.string :middlename From a0a97a1673db5f016418d480105de7206cbf1364 Mon Sep 17 00:00:00 2001 From: Apophis Date: Sun, 3 Feb 2013 18:38:00 +0200 Subject: [PATCH 17/20] fix_auth_chk --- app/controllers/users_controller.rb | 4 ++-- app/models/user.rb | 4 ++-- db/migrate/20130130234423_create_users.rb | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 1808a2f..af1e81e 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -14,7 +14,7 @@ def new end end end - +#access_token.info.urls.uid # GET /users/1/edit def edit @user = User.find(params[:id]) @@ -66,6 +66,6 @@ def destroy private def user_params - params.require(:user).permit(:email, :gender, :middlename, :name, :phonenumber, :slogan, :surname, :urlphoto, :url, :username, :password) + params.require(:user).permit(:email, :gender, :uid, :middlename, :name, :phonenumber, :slogan, :surname, :urlphoto, :url, :username, :password) end end diff --git a/app/models/user.rb b/app/models/user.rb index b0c5e2f..290281e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -7,9 +7,9 @@ class User < ActiveRecord::Base # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation, :remember_me - attr_accessible :email, :url, :gender, :middlename, :name, :phonenumber, :slogan, :surname, :urlphoto, :username + attr_accessible :email, :url, :uid, :gender, :middlename, :name, :phonenumber, :slogan, :surname, :urlphoto, :username def self.find_for_vkontakte_oauth access_token - @user = User.where(:url => access_token.info.urls.Vkontakte).first + @user = User.where(:uid => access_token.info.urls.uid).first end end diff --git a/db/migrate/20130130234423_create_users.rb b/db/migrate/20130130234423_create_users.rb index 0b314c5..db649d8 100644 --- a/db/migrate/20130130234423_create_users.rb +++ b/db/migrate/20130130234423_create_users.rb @@ -10,6 +10,7 @@ def change t.string :url t.string :urlphoto t.string :slogan + t.integer :uid t.timestamps end From b9fa5585ef36fd5da5b5dc6211c8731942db39e4 Mon Sep 17 00:00:00 2001 From: Apophis Date: Sun, 3 Feb 2013 18:47:23 +0200 Subject: [PATCH 18/20] upd_routes --- config/routes.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index 939ec0f..dae1c20 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,7 @@ KupiProgulku::Application.routes.draw do devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } - resources :users, :only => [:destroy, :edit, :new] + resources :users, :only => [:destroy, :edit, :new, :create]] get "omniauth_callbacks/vkontakte" From 578ce80462bd6fbd27ba069b78291ccc5b19d8d2 Mon Sep 17 00:00:00 2001 From: Apophis Date: Sun, 3 Feb 2013 18:51:52 +0200 Subject: [PATCH 19/20] upd_view --- app/views/users/_form.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/users/_form.html.haml b/app/views/users/_form.html.haml index a07eab0..0270905 100644 --- a/app/views/users/_form.html.haml +++ b/app/views/users/_form.html.haml @@ -18,4 +18,4 @@ = f.input :slogan, label: 'Ваш девиз' = f.input :password, :include_blank => false = f.select :gender, [["Male", false], ["Female", true]], label: 'Ваш пол' - = f.action :submit, :as => 'button', label: 'Опубликовать комментарий' + = f.action :submit, :as => 'button', label: 'Зарегистрироваться' From c9e705b3c891726204d44d5f7484eab77ef9fdb2 Mon Sep 17 00:00:00 2001 From: Apophis Date: Sun, 3 Feb 2013 21:53:58 +0200 Subject: [PATCH 20/20] fixes --- app/controllers/users_controller.rb | 16 +++++++++--- app/models/user.rb | 2 +- app/views/layouts/application.html.haml | 6 ++--- app/views/users/_form.html.haml | 9 +++++-- app/views/users/edit.html.haml | 4 +-- app/views/users/new.html.haml | 2 +- app/views/users/show.html.haml | 34 +++++++++++++++++++++++++ config/routes.rb | 2 +- db/schema.rb | 5 ++-- 9 files changed, 61 insertions(+), 19 deletions(-) create mode 100644 app/views/users/show.html.haml diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index af1e81e..0e15642 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,11 +1,12 @@ class UsersController < ApplicationController + before_filter :authenticate_user!, :only => [:edit, :update, :destroy] # GET /users/new # GET /users/new.json def new if user_signed_in? - redirect_to "/", notice: 'Already registered' + redirect_to root_path, notice: 'Already signin' elsif !session["devise.vkontakte_data"] - redirect_to "/" + redirect_to root_path else @user = User.new respond_to do |format| @@ -14,7 +15,15 @@ def new end end end -#access_token.info.urls.uid + + def show + @user = User.find(params[:id]) + respond_to do |format| + format.html # show.html.erb + format.json { render json: @user } + end + end + # GET /users/1/edit def edit @user = User.find(params[:id]) @@ -24,7 +33,6 @@ def edit # POST /users.json def create @user = User.new(user_params) - respond_to do |format| if @user.save format.html { redirect_to @user, notice: 'User was successfully created.' } diff --git a/app/models/user.rb b/app/models/user.rb index 290281e..ab27d4c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -10,6 +10,6 @@ class User < ActiveRecord::Base attr_accessible :email, :url, :uid, :gender, :middlename, :name, :phonenumber, :slogan, :surname, :urlphoto, :username def self.find_for_vkontakte_oauth access_token - @user = User.where(:uid => access_token.info.urls.uid).first + @user = User.where(:uid => access_token.uid).first end end diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 73cb792..81470d7 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -17,8 +17,6 @@ %body .container - = bootstrap_flash - .navbar.navbar-fixed-top .navbar-inner .container @@ -26,7 +24,7 @@ %span.icon-bar %span.icon-bar %span.icon-bar - %a.brand(href="/") Купи Прогулку + %a.brand(href=root_path) Купи Прогулку .container.nav-collapse %ul.nav @@ -41,7 +39,7 @@ = yield .span3 -unless user_signed_in? - %li= link_to image_tag('images.jpg'), user_omniauth_authorize_path(:vkontakte) + %p= link_to image_tag('vkontakte-logo.png'), user_omniauth_authorize_path(:vkontakte) %footer %p © Company 2012 diff --git a/app/views/users/_form.html.haml b/app/views/users/_form.html.haml index 0270905..cc1928a 100644 --- a/app/views/users/_form.html.haml +++ b/app/views/users/_form.html.haml @@ -14,8 +14,13 @@ = f.input :phonenumber, label: 'Контактный телефон', :hint => hint, :as => :string = f.input :email, label: 'Ваш имейл', :hint => 'для уведомлений' = f.input :urlphoto, label: 'Ваше фото' - = f.input :url, label: 'Ваш профайл вконтакте' = f.input :slogan, label: 'Ваш девиз' = f.input :password, :include_blank => false + - unless user_signed_in? + = f.input :uid, :as => 'hidden', :input_html => { :value => session["devise.vkontakte_data"]["uid"]} + = f.input :url, :as => 'hidden', :input_html => { :value => session["devise.vkontakte_data"]["info"]["urls"]["Vkontakte"]} = f.select :gender, [["Male", false], ["Female", true]], label: 'Ваш пол' - = f.action :submit, :as => 'button', label: 'Зарегистрироваться' + + = f.action :submit, :as => 'button', label: 'Сохранить' + + diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml index c367bfa..603fc1d 100644 --- a/app/views/users/edit.html.haml +++ b/app/views/users/edit.html.haml @@ -2,6 +2,4 @@ = render 'form' -= link_to 'Show', @user -\| -= link_to 'Back', users_path += link_to 'Back', root_path diff --git a/app/views/users/new.html.haml b/app/views/users/new.html.haml index 8418550..64d2962 100644 --- a/app/views/users/new.html.haml +++ b/app/views/users/new.html.haml @@ -3,6 +3,6 @@ = render 'form' -= link_to 'Back', users_path += link_to 'Back', root_path diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml new file mode 100644 index 0000000..5e084fe --- /dev/null +++ b/app/views/users/show.html.haml @@ -0,0 +1,34 @@ +%p#notice= notice + +%p + %b Gender: + = @user.gender +%p + %b Username: + = @user.username +%p + %b Surname: + = @user.surname +%p + %b Name: + = @user.name +%p + %b Middlename: + = @user.middlename +%p + %b Phonenumber: + = @user.phonenumber +%p + %b Email: + = @user.email +%p + %b Urlprofile: + = @user.url +%p + %b Urlphoto: + = @user.urlphoto +%p + %b Slogan: + = @user.slogan + += link_to 'Back', root_path diff --git a/config/routes.rb b/config/routes.rb index dae1c20..7a91154 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,7 @@ KupiProgulku::Application.routes.draw do devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } - resources :users, :only => [:destroy, :edit, :new, :create]] + resources :users get "omniauth_callbacks/vkontakte" diff --git a/db/schema.rb b/db/schema.rb index fc80d72..d128500 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -81,15 +81,14 @@ create_table "users", :force => true do |t| t.string "gender" t.string "username" - t.string "nickname" - t.string "provider" t.string "surname" t.string "name" t.string "middlename" t.integer "phonenumber" - t.string "urlprofile" + t.string "url" t.string "urlphoto" t.string "slogan" + t.integer "uid" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false t.string "email", :default => "", :null => false