Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Users::RegistrationsController < Devise::RegistrationsController
- include ApplicationHelper
- def create
- super
- end
- def new
- super
- end
- def edit
- super
- end
- protected
- def update_resource(resource, params)
- resource.update_without_password(params)
- end
- class User < ActiveRecord::Base
- devise :database_authenticatable, :registerable,
- :recoverable, :rememberable, :trackable, :validatable
- devise :omniauthable, omniauth_providers: [:facebook]
- acts_as_voter
- mount_uploader :avatar, AvatarUploader
- def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
- user = User.where(provider: auth.provider, uid: auth.uid).first
- # The User was found in our database
- return user if user
- # Check if the User is already registered without Facebook
- user = User.where(email: auth.info.email).first
- return user if user
- # The User was not found and we need to create them
- User.create(real_name: auth.extra.raw_info.name,
- provider: auth.provider,
- uid: auth.uid,
- location: auth.info.location,
- language: auth.info.language,
- gender: auth.extra.raw_info.gender,
- email: auth.info.email,
- password: Devise.friendly_token[0,20],
- remote_avatar_url: auth.info.image)
- end
- attr_accessor :login
- def self.find_first_by_auth_conditions(warden_conditions)
- conditions = warden_conditions.dup
- if login = conditions.delete(:login)
- where(conditions).where(["lower(username) = :value OR lower(email) = :value", {value: login.downcase}]).first
- else
- where(conditions).first
- end
- end
- devise authentication_keys: [:login]
- end
- class ApplicationController < ActionController::Base
- protect_from_forgery with: :exception
- before_filter :configure_permitted_parameters, if: :devise_controller?
- protected
- def configure_permitted_parameters
- devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation, :remember_me, :real_name, :gender, :language, :location, :age, :avatar, :avatar_cache) }
- devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :username, :email, :password, :remember_me) }
- devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, :password, :password_confirmation, :current_password, :real_name, :gender, :language, :location, :age, :avatar, :avatar_cache, :remove_avatar) }
- end
- private
- def require_user_signed_in
- unless user_signed_in?
- # If the user came from a page, we can send them back. Otherwise, send
- # them to the root path.
- if request.env['HTTP_REFERER']
- fallback_redirect = :back
- elsif defined?(root_path)
- fallback_redirect = root_path
- else
- fallback_redirect = "/"
- end
- redirect_to fallback_redirect, flash: {error: "You must be signed in to view this page."}
- end
- end
- end
- root 'posts#index'
- devise_for :users, controllers: {registrations: "users/registrations", sessions: "users/sessions", passwords: "users/passwords", omniauth_callbacks: "users/omniauth_callbacks"}, skip: [:sessions, :registrations]
- devise_scope :user do
- get "login" => "users/sessions#new", as: :new_user_session
- post "login" => "users/sessions#create", as: :user_session
- delete "signout" => "users/sessions#destroy", as: :destroy_user_session
- get "signup" => "users/registrations#new", as: :new_user_registration
- post "signup" => "users/registrations#create", as: :user_registration
- put "signup" => "users/registrations#update", as: :update_user_registration
- get "account" => "users/registrations#edit", as: :edit_user_registration
- end
- <%= form_for(resource, as: resource_name, url: registration_path(resource_name), :html => {:multipart => true}) do |f| %>
- <%= devise_error_messages! %>
- <div class="form-group">
- <%= f.label :username, class: "control-label col-md-4" %>
- <div class="col-md-8">
- <%= f.text_field :username, class: "text-field form-control", html: {spellcheck: "false"} %>
- </div>
- </div>
- <div class="form-group">
- <%= f.label :avatar, class: "control-label col-md-4" %>
- <div class="col-md-8">
- <%= f.file_field :avatar %>
- </div>
- </div>
- <div class="form-group">
- <%= f.label :email, class: "control-label col-md-4" %>
- <div class="col-md-8">
- <%= f.email_field :email, class: "text-field form-control", html: {spellcheck: "false"} %>
- </div>
- </div>
- <div class="form-group">
- <%= f.label :password, class: "control-label col-md-4" %>
- <div class="col-md-8">
- <%= f.password_field :password, class: "text-field form-control", html: {autocomplete: "off"} %>
- </div>
- </div>
- <div class="form-group">
- <%= f.label :password_confirmation, "Password Confirmation", class: "control-label col-md-4" %>
- <div class="col-md-8">
- <%= f.password_field :password_confirmation, class: "text-field form-control", html: {autocomplete: "off"} %>
- </div>
- </div>
- <div class="form-group">
- <div class="col-md-offset-4 col-md-8">
- <%= f.submit "Sign Up", class: "btn btn-primary" %>
- </div>
- </div>
- <%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name), :html => {:multipart => true}) do |f| %>
- <div class="form-group">
- <strong>Existing Avatar</strong><BR>
- <% if current_user.avatar.url.present? %>
- <%= image_tag @current_user.avatar_url(:large).to_s %>
- <%= f.label :remove_avatar do %>
- <%= f.check_box :remove_avatar, class: 'form-control' %>
- <% end %>
- <% end %>
- </div>
- <div class="form-group">
- <%= f.label :avatar, class: "control-label col-md-4" %>
- <%= f.file_field :avatar %>
- <%= f.hidden_field :avatar_cache %>
- </div>
- <div class="form-actions">
- <%= f.submit 'Update', :class => 'button right' %>
- </div>
- class AvatarUploader < CarrierWave::Uploader::Base
- include CarrierWave::RMagick
- storage :file
- def store_dir
- "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
- end
- def cache_dir
- "/tmp/avatarTmp"
- end
- process :scale => [200, 300]
- version :tiny do
- process :resize_to_fit => [20, 20]
- end
- version :thumb do
- process :resize_to_fit => [50, 50]
- end
- version :large do
- process :resize_to_fit => [200, 200]
- end
- def extension_white_list
- %w(jpg jpeg gif png)
- end
- def filename
- "avatar.jpg" if original_filename
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement