diff --git a/.gitignore b/.gitignore index f22dd34..ade0a48 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ # Ignore master key for decrypting credentials and more. /config/master.key +/config/cloudinary.yml /public/packs /public/packs-test diff --git a/Gemfile b/Gemfile index 94397c1..06cdcf7 100644 --- a/Gemfile +++ b/Gemfile @@ -53,4 +53,6 @@ end gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby] gem 'bootstrap-sass', '~> 3.4', '>= 3.4.1' -gem 'font-awesome-sass', '~> 5.13' \ No newline at end of file +gem 'font-awesome-sass', '~> 5.13' +gem 'carrierwave', '~> 2.1' +gem 'cloudinary', '~> 1.14' diff --git a/Gemfile.lock b/Gemfile.lock index 3f5e00f..eb1f293 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -61,6 +61,7 @@ GEM ast (2.4.0) autoprefixer-rails (9.7.6) execjs + aws_cf_signer (0.1.3) bindex (0.8.1) bootsnap (1.4.6) msgpack (~> 1.0) @@ -77,11 +78,23 @@ GEM rack-test (>= 0.6.3) regexp_parser (~> 1.5) xpath (~> 3.2) + carrierwave (2.1.0) + activemodel (>= 5.0.0) + activesupport (>= 5.0.0) + addressable (~> 2.6) + image_processing (~> 1.1) + mimemagic (>= 0.3.0) + mini_mime (>= 0.1.3) childprocess (3.0.0) + cloudinary (1.14.0) + aws_cf_signer + rest-client concurrent-ruby (1.1.6) crass (1.0.6) database_cleaner (1.8.5) diff-lcs (1.3) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) erubi (1.9.0) execjs (2.7.0) factory_bot (5.2.0) @@ -94,8 +107,14 @@ GEM sassc (>= 1.11) globalid (0.4.2) activesupport (>= 4.2.0) + http-accept (1.7.0) + http-cookie (1.0.3) + domain_name (~> 0.5) i18n (1.8.3) concurrent-ruby (~> 1.0) + image_processing (1.11.0) + mini_magick (>= 4.9.5, < 5) + ruby-vips (>= 2.0.17, < 3) jbuilder (2.10.0) activesupport (>= 5.0.0) listen (3.2.1) @@ -109,11 +128,16 @@ GEM marcel (0.3.3) mimemagic (~> 0.3.2) method_source (1.0.0) + mime-types (3.3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2020.0512) mimemagic (0.3.5) + mini_magick (4.10.1) mini_mime (1.0.2) mini_portile2 (2.4.0) minitest (5.14.1) msgpack (1.3.3) + netrc (0.11.0) nio4r (2.5.2) nokogiri (1.10.9) mini_portile2 (~> 2.4.0) @@ -161,6 +185,11 @@ GEM rb-inotify (0.10.1) ffi (~> 1.0) regexp_parser (1.7.1) + rest-client (2.1.0) + http-accept (>= 1.7.0, < 2.0) + http-cookie (>= 1.0.2, < 2.0) + mime-types (>= 1.16, < 4.0) + netrc (~> 0.8) rexml (3.2.4) rspec-core (3.9.2) rspec-support (~> 3.9.3) @@ -191,6 +220,8 @@ GEM rubocop-ast (0.0.3) parser (>= 2.7.0.1) ruby-progressbar (1.10.1) + ruby-vips (2.0.17) + ffi (~> 1.9) rubyzip (2.3.0) sass-rails (6.0.0) sassc-rails (~> 2.1, >= 2.1.1) @@ -226,6 +257,9 @@ GEM turbolinks-source (5.2.0) tzinfo (1.2.7) thread_safe (~> 0.1) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.7) unicode-display_width (1.7.0) web-console (4.0.2) actionview (>= 6.0.0) @@ -251,6 +285,8 @@ DEPENDENCIES bootstrap-sass (~> 3.4, >= 3.4.1) byebug capybara (~> 3.32, >= 3.32.2) + carrierwave (~> 2.1) + cloudinary (~> 1.14) database_cleaner (~> 1.8, >= 1.8.5) factory_bot_rails (~> 5.2) font-awesome-sass (~> 5.13) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 652eb5c..43182aa 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,33 +1,35 @@ +require 'digest/sha1' class UsersController < ApplicationController before_action :set_user, only: [:show, :edit, :update, :destroy] before_action :logged_in_user, only: [:index, :edit, :update, :destroy, :following, :followers] - # GET /users - # GET /users.json + before_action :check_configuration, only: [:new] + + def check_configuration + render 'configuration_missing' if Cloudinary.config.api_key.blank? + end + def index @users = User.all end - # GET /users/1 - # GET /users/1.json def show end - # GET /users/new def new session[:forwarding_url] = login_path @user = User.new + render layout: "logged_out" end - # GET /users/1/edit def edit end - # POST /users - # POST /users.json def create - @user = User.new(user_params) + @user = User.new(name: user_params[:name]) + uploaded_file = Cloudinary::Uploader.upload(user_params[:gravatar_url]) + @user.gravatar_url = uploaded_file['secure_url'] respond_to do |format| if @user.save @@ -40,8 +42,6 @@ def create end end - # PATCH/PUT /users/1 - # PATCH/PUT /users/1.json def update respond_to do |format| if @user.update(user_params) @@ -54,8 +54,6 @@ def update end end - # DELETE /users/1 - # DELETE /users/1.json def destroy @user.destroy respond_to do |format| @@ -69,13 +67,8 @@ def my_time_entries end private - # Use callbacks to share common setup or constraints between actions. + def set_user @user = User.find(params[:id]) end - - # Only allow a list of trusted parameters through. - def user_params - params.require(:user).permit(:name, :gravatar_url) - end end diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js index 8768ab8..a519fdf 100644 --- a/app/javascript/packs/application.js +++ b/app/javascript/packs/application.js @@ -2,6 +2,7 @@ // present in this directory. You're encouraged to place your actual application logic in // a relevant structure within app/javascript and only use these pack files to reference // that code so it'll be compiled. +//= require cloudinary require("@rails/ujs").start() require("turbolinks").start() diff --git a/app/models/user.rb b/app/models/user.rb index 00173a1..1d8308e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -2,4 +2,5 @@ class User < ApplicationRecord has_many :time_entries, inverse_of: 'author', foreign_key: :author_id has_many :groups validates :name, presence: true, uniqueness: true + # mount_uploader :gravatar_url, AvatarUploader end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 6f523e1..a6f5bf5 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -7,8 +7,10 @@ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> - - + <%# <%= javascript_include_tag("jquery.ui.widget", "jquery.iframe-transport", + "jquery.fileupload", "jquery.cloudinary") %> %> + <%# %> + <%# %> <% flash.each do |message_type, message| %> @@ -55,7 +57,15 @@ $('#sidebarCollapse').on('click', function () { $('#sidebar').toggleClass('active'); }); + + $(function() { + if($.fn.cloudinary_fileupload !== undefined) { + $("input.cloudinary-fileupload[type=file]").cloudinary_fileupload(); + } + }); }); + <%= cloudinary_js_config %> + diff --git a/app/views/layouts/logged_out.html.erb b/app/views/layouts/logged_out.html.erb index 299ee41..ef568fe 100644 --- a/app/views/layouts/logged_out.html.erb +++ b/app/views/layouts/logged_out.html.erb @@ -17,5 +17,6 @@ <% end %> <%= yield %> + <%= cloudinary_js_config %> diff --git a/app/views/users/_form.html.erb b/app/views/users/_form.html.erb index 3e46253..d6689be 100644 --- a/app/views/users/_form.html.erb +++ b/app/views/users/_form.html.erb @@ -1,6 +1,9 @@
+

<%= @r %>

<%= form_with(model: user, local: true, class: 'form') do |form| %> + <%= form.hidden_field(:gravatar_url_cache) %> + <% if user.errors.any? %>

<%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:

@@ -16,7 +19,7 @@
<%= image_tag('default-profile.png', alt: "default", class: "gravatar") %> - Upload picture + <%= form.file_field :gravatar_url, placeholder: 'Upload picture' %>
@@ -25,11 +28,11 @@
- <%= form.email_field :name, class: 'form-control', placeholder: 'Email' %> + <%= form.email_field :email, class: 'form-control', placeholder: 'Email' %>
- <%= form.password_field :name, class: 'form-control', placeholder: 'Password' %> + <%= form.password_field :password, class: 'form-control', placeholder: 'Password' %>
diff --git a/public/uploads/tmp/1591836728-203399911350131-0001-3409/download.jpeg b/public/uploads/tmp/1591836728-203399911350131-0001-3409/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/tmp/1591836728-203399911350131-0001-3409/download.jpeg differ diff --git a/public/uploads/tmp/1591881656-311587479140943-0001-0056/download.jpeg b/public/uploads/tmp/1591881656-311587479140943-0001-0056/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/tmp/1591881656-311587479140943-0001-0056/download.jpeg differ diff --git a/public/uploads/tmp/1591881693-797888889157239-0002-0490/download.jpeg b/public/uploads/tmp/1591881693-797888889157239-0002-0490/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/tmp/1591881693-797888889157239-0002-0490/download.jpeg differ diff --git a/public/uploads/tmp/1591881717-260569358081836-0003-2387/download.jpeg b/public/uploads/tmp/1591881717-260569358081836-0003-2387/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/tmp/1591881717-260569358081836-0003-2387/download.jpeg differ diff --git a/public/uploads/tmp/1591881741-597597220738370-0004-5862/download.jpeg b/public/uploads/tmp/1591881741-597597220738370-0004-5862/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/tmp/1591881741-597597220738370-0004-5862/download.jpeg differ diff --git a/public/uploads/tmp/1591882244-227105930825058-0005-3596/download.jpeg b/public/uploads/tmp/1591882244-227105930825058-0005-3596/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/tmp/1591882244-227105930825058-0005-3596/download.jpeg differ diff --git a/public/uploads/tmp/1591882261-687348571271381-0006-5735/download.jpeg b/public/uploads/tmp/1591882261-687348571271381-0006-5735/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/tmp/1591882261-687348571271381-0006-5735/download.jpeg differ diff --git a/public/uploads/tmp/1591882755-133774219947768-0007-8122/download.jpeg b/public/uploads/tmp/1591882755-133774219947768-0007-8122/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/tmp/1591882755-133774219947768-0007-8122/download.jpeg differ diff --git a/public/uploads/tmp/1591882858-384833762171201-0008-6125/download.jpeg b/public/uploads/tmp/1591882858-384833762171201-0008-6125/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/tmp/1591882858-384833762171201-0008-6125/download.jpeg differ diff --git a/public/uploads/tmp/1591883138-646611131966824-0009-5575/download.jpeg b/public/uploads/tmp/1591883138-646611131966824-0009-5575/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/tmp/1591883138-646611131966824-0009-5575/download.jpeg differ diff --git a/public/uploads/tmp/1591883207-617422482837199-0010-4611/download.jpeg b/public/uploads/tmp/1591883207-617422482837199-0010-4611/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/tmp/1591883207-617422482837199-0010-4611/download.jpeg differ diff --git a/public/uploads/tmp/1591883281-841660978848903-0011-1087/download.jpeg b/public/uploads/tmp/1591883281-841660978848903-0011-1087/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/tmp/1591883281-841660978848903-0011-1087/download.jpeg differ diff --git a/public/uploads/user/gravatar_url/10/user6.png b/public/uploads/user/gravatar_url/10/user6.png new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/user/gravatar_url/10/user6.png differ diff --git a/public/uploads/user/gravatar_url/11/user7.png b/public/uploads/user/gravatar_url/11/user7.png new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/user/gravatar_url/11/user7.png differ diff --git a/public/uploads/user/gravatar_url/3/download.jpeg b/public/uploads/user/gravatar_url/3/download.jpeg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/user/gravatar_url/3/download.jpeg differ diff --git a/public/uploads/user/gravatar_url/4/ds0pn4rxjketntphoz0j.jpg b/public/uploads/user/gravatar_url/4/ds0pn4rxjketntphoz0j.jpg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/user/gravatar_url/4/ds0pn4rxjketntphoz0j.jpg differ diff --git a/public/uploads/user/gravatar_url/5/user1.jpg b/public/uploads/user/gravatar_url/5/user1.jpg new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/user/gravatar_url/5/user1.jpg differ diff --git a/public/uploads/user/gravatar_url/6/user2.png b/public/uploads/user/gravatar_url/6/user2.png new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/user/gravatar_url/6/user2.png differ diff --git a/public/uploads/user/gravatar_url/7/user3.png b/public/uploads/user/gravatar_url/7/user3.png new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/user/gravatar_url/7/user3.png differ diff --git a/public/uploads/user/gravatar_url/8/user4.png b/public/uploads/user/gravatar_url/8/user4.png new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/user/gravatar_url/8/user4.png differ diff --git a/public/uploads/user/gravatar_url/9/user5.png b/public/uploads/user/gravatar_url/9/user5.png new file mode 100644 index 0000000..b499690 Binary files /dev/null and b/public/uploads/user/gravatar_url/9/user5.png differ