diff --git a/.gitignore b/.gitignore index 7e636d4..2a08fef 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ node_modules yarn-error.log .byebug_history .env* +.env* diff --git a/Gemfile b/Gemfile index 6287adb..ffa11e3 100644 --- a/Gemfile +++ b/Gemfile @@ -16,6 +16,8 @@ gem 'sass-rails' gem 'simple_form' gem 'uglifier' gem 'webpacker' +gem 'cloudinary' +gem 'carrierwave', '~> 1.2' group :development do gem 'web-console', '>= 3.3.0' diff --git a/Gemfile.lock b/Gemfile.lock index a0193ad..ec82a00 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -45,6 +45,7 @@ GEM arel (9.0.0) autoprefixer-rails (9.1.3) execjs + aws_cf_signer (0.1.3) bcrypt (3.1.12) bindex (0.5.0) bootsnap (1.3.1) @@ -54,6 +55,13 @@ GEM sass (>= 3.3.4) builder (3.2.3) byebug (10.0.2) + carrierwave (1.2.3) + activemodel (>= 4.0.0) + activesupport (>= 4.0.0) + mime-types (>= 1.16) + cloudinary (1.9.1) + aws_cf_signer + rest-client coderay (1.1.2) concurrent-ruby (1.0.5) crass (1.0.4) @@ -63,6 +71,8 @@ GEM railties (>= 4.1.0, < 6.0) responders warden (~> 1.2.3) + domain_name (0.5.20180417) + unf (>= 0.0.5, < 1.0.0) dotenv (2.5.0) dotenv-rails (2.5.0) dotenv (= 2.5.0) @@ -74,6 +84,8 @@ GEM sassc (>= 1.11) globalid (0.4.1) activesupport (>= 4.2.0) + http-cookie (1.0.3) + domain_name (~> 0.5) i18n (1.1.0) concurrent-ruby (~> 1.0) jbuilder (2.7.0) @@ -90,12 +102,16 @@ GEM marcel (0.3.2) mimemagic (~> 0.3.2) method_source (0.9.0) + mime-types (3.2.2) + mime-types-data (~> 3.2015) + mime-types-data (3.2018.0812) mimemagic (0.3.2) mini_mime (1.0.1) mini_portile2 (2.3.0) minitest (5.11.3) msgpack (1.2.4) multi_json (1.13.1) + netrc (0.11.0) nio4r (2.3.1) nokogiri (1.8.4) mini_portile2 (~> 2.3.0) @@ -147,6 +163,10 @@ GEM responders (2.4.0) actionpack (>= 4.2.0, < 5.3) railties (>= 4.2.0, < 5.3) + rest-client (2.0.2) + http-cookie (>= 1.0.2, < 2.0) + mime-types (>= 1.16, < 4.0) + netrc (~> 0.8) sass (3.5.7) sass-listen (~> 4.0.0) sass-listen (4.0.0) @@ -183,6 +203,9 @@ GEM thread_safe (~> 0.1) uglifier (4.1.18) execjs (>= 0.3.0, < 3) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.5) warden (1.2.7) rack (>= 1.0) web-console (3.6.2) @@ -205,6 +228,8 @@ DEPENDENCIES autoprefixer-rails bootsnap bootstrap-sass (~> 3.3) + carrierwave (~> 1.2) + cloudinary devise dotenv-rails font-awesome-sass (~> 5.0.9) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index c325189..69a430a 100755 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -19,3 +19,4 @@ body { background-color: $background; } @import "devise/index"; +@import "users/index"; diff --git a/app/assets/stylesheets/users/_edit.scss b/app/assets/stylesheets/users/_edit.scss new file mode 100644 index 0000000..48c2d94 --- /dev/null +++ b/app/assets/stylesheets/users/_edit.scss @@ -0,0 +1,33 @@ +.profile-container { + margin: 0 1in; + display: flex; + justify-content: space-between; + align-items: center; + height: calc(100vh - 4.5em); // 4.5em is height of navbar + + form { + flex-grow: 1; + + .description { + width: 100%; + height: 5em; + } + } + + .profile-pic { + display: flex; + flex-direction: column; + align-items: center; + margin-left: 3em; + + img { + max-width: 50vw; + } + } +} + +.profile-form { + display: grid; + grid-template-columns: 1fr 1fr; + color: white; +} diff --git a/app/assets/stylesheets/users/_index.scss b/app/assets/stylesheets/users/_index.scss new file mode 100644 index 0000000..7147706 --- /dev/null +++ b/app/assets/stylesheets/users/_index.scss @@ -0,0 +1,2 @@ +@import "show"; +@import "edit"; diff --git a/app/assets/stylesheets/users/_show.scss b/app/assets/stylesheets/users/_show.scss new file mode 100644 index 0000000..b978a08 --- /dev/null +++ b/app/assets/stylesheets/users/_show.scss @@ -0,0 +1,51 @@ +.user-container { + margin: 0 1in; + height: calc(100vh - 4.5em); //4.5em is height of navbar. + display:flex; + flex-direction: column; + justify-content: center; + + h2 { + font-size: 1.5em; + } + .profile { + background: #33333D; + display: flex; + + .flex-end { + margin-left: auto; + display:flex; + align-items: center; + + a:first-child { + margin-right: .5em; + } + } + .profile-pic { + display: flex; + align-items: center; + margin-right: 3em; + img { + width: 10em; + } + } + + .profile-text { + display: flex; + flex-direction: column; + justify-content: center; + h1 { + margin: 0 0 .5em 0 ; + } + h2 { + margin: 0; + } + .italics { + font-style: italic; + color: white; + } + } + } + + } + diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb new file mode 100644 index 0000000..3901dc9 --- /dev/null +++ b/app/controllers/users_controller.rb @@ -0,0 +1,39 @@ +class UsersController < ApplicationController + before_action :find_user, only: [:edit, :update, :show, :destroy] + + def edit; end + + def update + @user.update(user_params) + redirect_to user_edit_path(@user) + end + + def create + # Untested Code + user = User.new(user_params) + authorize user # I don't know where to put this TODO: Test this method + if user.save + redirect_to user_path(user) + else + raise + end + end + + def show; end + + def destroy + @user.destroy + redirect_to root_path + end + + private + + def find_user + @user = User.find(params[:id]) + #authorize @user + end + + def user_params + params.require(:user).permit(:email, :first_name, :last_name, :description, :photo) + end +end diff --git a/app/models/user.rb b/app/models/user.rb index ab904a2..6043bee 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,4 +1,5 @@ class User < ApplicationRecord + # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, @@ -9,6 +10,8 @@ class User < ApplicationRecord has_many :chat_rooms, through: :chat_room_participations has_many :requests + mount_uploader :photo, PhotoUploader + def contacts self.connections.map do |connection| connection.contact diff --git a/app/uploaders/photo_uploader.rb b/app/uploaders/photo_uploader.rb new file mode 100644 index 0000000..a700b37 --- /dev/null +++ b/app/uploaders/photo_uploader.rb @@ -0,0 +1,3 @@ +class PhotoUploader < CarrierWave::Uploader::Base + include Cloudinary::CarrierWave +end diff --git a/app/views/shared/_navbar.html.erb b/app/views/shared/_navbar.html.erb index d8081b7..6810141 100644 --- a/app/views/shared/_navbar.html.erb +++ b/app/views/shared/_navbar.html.erb @@ -5,11 +5,28 @@
Find me in app/views/users/index.html.erb
diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb new file mode 100644 index 0000000..ce96bc4 --- /dev/null +++ b/app/views/users/new.html.erb @@ -0,0 +1,2 @@ +Find me in app/views/users/new.html.erb
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb new file mode 100644 index 0000000..5d17cda --- /dev/null +++ b/app/views/users/show.html.erb @@ -0,0 +1,26 @@ + + + +