diff --git a/Gemfile b/Gemfile index 9cd940303826ab5c89b1c1e92e471d919f45e3d3..5cf5cb30a5e61c6723e67a20ba3766095e75bb39 100644 --- a/Gemfile +++ b/Gemfile @@ -27,7 +27,6 @@ gem "stimulus-rails" # Build JSON APIs with ease [https://github.com/rails/jbuilder] gem "jbuilder" -gem "devise" gem 'bootstrap', '~> 5.1.3' @@ -49,6 +48,8 @@ gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ] # Reduces boot times through caching; required in config/boot.rb gem "bootsnap", require: false +gem 'jwt' +gem 'httparty' # Use Sass to process CSS # gem "sassc-rails" diff --git a/Gemfile.lock b/Gemfile.lock index c9ae1ddceba6286dc620825ef0ca58e6192cd19f..208c0a05d564fa79550e562d80282f2653cbc8a9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -106,6 +106,9 @@ GEM ffi (1.15.5) globalid (1.0.0) activesupport (>= 5.0) + httparty (0.20.0) + mime-types (~> 3.0) + multi_xml (>= 0.5.2) i18n (1.10.0) concurrent-ruby (~> 1.0) importmap-rails (1.0.3) @@ -122,6 +125,7 @@ GEM rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) + jwt (2.3.0) loofah (2.15.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) @@ -130,9 +134,13 @@ GEM marcel (1.0.2) matrix (0.4.2) method_source (1.0.0) + mime-types (3.4.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2022.0105) mini_mime (1.1.2) minitest (5.15.0) msgpack (1.4.5) + multi_xml (0.6.0) mysql2 (0.5.3) net-imap (0.2.3) digest @@ -256,9 +264,11 @@ DEPENDENCIES capybara debug devise + httparty importmap-rails jbuilder jquery-rails + jwt mysql2 (~> 0.5.3) puma (~> 5.0) rails (~> 7.0.2, >= 7.0.2.3) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 4f6975b4d8eff9c111a4d31ed3ac2ae24d39b851..dc7aeda5d38f19381b7582fe5e3a17be7514c722 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,12 +1,64 @@ class ApplicationController < ActionController::Base - before_action :configure_permitted_parameters, if: :devise_controller? protected - def configure_permitted_parameters - attributes = [:firstname, :lastname, :username] - devise_parameter_sanitizer.permit(:sign_up, keys: attributes) - devise_parameter_sanitizer.permit(:account_update, keys: attributes) + def login(loginParams) + login = HTTParty.post('http://172.17.0.1:3001/api/login', :body => { + :user => { + :email => loginParams['email'], + :password => loginParams['password'] } + }.to_json, + :headers => { 'Content-Type' => 'application/json'}) + + puts session[:user_id] + session[:user_id] = login['data']['id'] + puts "1" + + session[:jwt_token] = login.header['authorization'] + puts "1" + + session[:logged_in] = true + puts "1" + + + puts "1" + + render "home" + end + + def auth + auth = HTTParty.post('http://172.17.0.1:3001/auth', :headers => { 'Content-Type' => 'application/json', 'Authorization' => session[:jwt_token]}) + puts auth["message"] + if auth["message"] == "User Authenticated." + puts "authenticated" + else + session[:logged_in] = false + end + + render "home" + end + + def sign_up_test(sign_up_params) + sign_up = HTTParty.post('http://172.17.0.1:3001/api/signup', :body => { + :user => { + :email => sign_up_params['email'], + :password => sign_up_params['password'] + }}.to_json, + :headers => { 'Content-Type' => 'application/json'}) + + session[:user_id] = sign_up.body['id'] + session[:jwt_token] = sign_up.header['authorization'] + session[:logged_in] = true + puts sign_up + + render "home" end + + def log_out + logout = HTTParty.delete('http://172.17.0.1:3001/api/logout', :headers => { 'Content-Type' => 'application/json', 'Authorization' => session[:jwt_token]}) + session[:logged_in] = false + render "home" + end + end diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 76fd66c2464241cbbfa79ad0ff5fdd009c122999..43d513ccb2b0058faa2f6b607da075fcc1f68745 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -1,4 +1,33 @@ +require "uri" +require "net/http" +require "cgi" + class HomeController < ApplicationController def home end + + # TODO: move bellow code into sessions controller + + def test + login_params = {"email" => "test@surrey.ac.uk", "password" => "123456"} + login(login_params) + puts session[:jwt_token] + puts session[:user_id] + puts true + end + + def test_sign_up + sign_up_params = {"email" => "test2@surrey.ac.uk", "password" => "1234567"} + sign_up_test(sign_up_params) + end + + def test_log_out + log_out + end + + def test_auth + auth + end + + end \ No newline at end of file diff --git a/app/controllers/user/confirmations_controller.rb b/app/controllers/user/confirmations_controller.rb deleted file mode 100644 index e37cc10c3b00a8c562844ca54b1f1b16ce56fe52..0000000000000000000000000000000000000000 --- a/app/controllers/user/confirmations_controller.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true - -class User::ConfirmationsController < Devise::ConfirmationsController - # GET /resource/confirmation/new - # def new - # super - # end - - # POST /resource/confirmation - # def create - # super - # end - - # GET /resource/confirmation?confirmation_token=abcdef - # def show - # super - # end - - # protected - - # The path used after resending confirmation instructions. - # def after_resending_confirmation_instructions_path_for(resource_name) - # super(resource_name) - # end - - # The path used after confirmation. - # def after_confirmation_path_for(resource_name, resource) - # super(resource_name, resource) - # end -end diff --git a/app/controllers/user/omniauth_callbacks_controller.rb b/app/controllers/user/omniauth_callbacks_controller.rb deleted file mode 100644 index 21aad21ff6236401275e56b155a86c512f7f7be7..0000000000000000000000000000000000000000 --- a/app/controllers/user/omniauth_callbacks_controller.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true - -class User::OmniauthCallbacksController < Devise::OmniauthCallbacksController - # You should configure your model like this: - # devise :omniauthable, omniauth_providers: [:twitter] - - # You should also create an action method in this controller like this: - # def twitter - # end - - # More info at: - # https://github.com/heartcombo/devise#omniauth - - # GET|POST /resource/auth/twitter - # def passthru - # super - # end - - # GET|POST /users/auth/twitter/callback - # def failure - # super - # end - - # protected - - # The path used when OmniAuth fails - # def after_omniauth_failure_path_for(scope) - # super(scope) - # end -end diff --git a/app/controllers/user/passwords_controller.rb b/app/controllers/user/passwords_controller.rb deleted file mode 100644 index 5951f5b327f844afc9ca6a24cd6f84d50485ff7f..0000000000000000000000000000000000000000 --- a/app/controllers/user/passwords_controller.rb +++ /dev/null @@ -1,34 +0,0 @@ -# frozen_string_literal: true - -class User::PasswordsController < Devise::PasswordsController - # GET /resource/password/new - # def new - # super - # end - - # POST /resource/password - # def create - # super - # end - - # GET /resource/password/edit?reset_password_token=abcdef - # def edit - # super - # end - - # PUT /resource/password - # def update - # super - # end - - # protected - - # def after_resetting_password_path_for(resource) - # super(resource) - # end - - # The path used after sending reset password instructions - # def after_sending_reset_password_instructions_path_for(resource_name) - # super(resource_name) - # end -end diff --git a/app/controllers/user/registrations_controller.rb b/app/controllers/user/registrations_controller.rb deleted file mode 100644 index f32fa1596ae24805a15825914a4d15cbee979a3e..0000000000000000000000000000000000000000 --- a/app/controllers/user/registrations_controller.rb +++ /dev/null @@ -1,62 +0,0 @@ -# frozen_string_literal: true - -class User::RegistrationsController < Devise::RegistrationsController - before_action :configure_sign_up_params, only: [:create] - before_action :configure_account_update_params, only: [:update] - - # GET /resource/sign_up - # def new - # super - # end - - # POST /resource - def create - super - end - - # GET /resource/edit - # def edit - # super - # end - - # PUT /resource - # def update - # super - # end - - # DELETE /resource - # def destroy - # super - # end - - # GET /resource/cancel - # Forces the session data which is usually expired after sign - # in to be expired now. This is useful if the user wants to - # cancel oauth signing in/up in the middle of the process, - # removing all OAuth session data. - # def cancel - # super - # end - - # protected - - # If you have extra params to permit, append them to the sanitizer. - def configure_sign_up_params - devise_parameter_sanitizer.permit(:sign_up, keys: [:firstname, :lastname, :username]) - end - - # If you have extra params to permit, append them to the sanitizer. - def configure_account_update_params - devise_parameter_sanitizer.permit(:account_update, keys: [:firstname, :lastname, :username]) - end - - # The path used after sign up. - # def after_sign_up_path_for(resource) - # super(resource) - # end - - # The path used after sign up for inactive accounts. - # def after_inactive_sign_up_path_for(resource) - # super(resource) - # end -end diff --git a/app/controllers/user/sessions_controller.rb b/app/controllers/user/sessions_controller.rb deleted file mode 100644 index be4b5692c26a687c1122da6e274c21cad322f5fe..0000000000000000000000000000000000000000 --- a/app/controllers/user/sessions_controller.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -class User::SessionsController < Devise::SessionsController - # before_action :configure_sign_in_params, only: [:create] - - # GET /resource/sign_in - # def new - # super - # end - - # POST /resource/sign_in - # def create - # super - # end - - # DELETE /resource/sign_out - # def destroy - # super - # end - - # protected - - # If you have extra params to permit, append them to the sanitizer. - # def configure_sign_in_params - # devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute]) - # end -end diff --git a/app/controllers/user/unlocks_controller.rb b/app/controllers/user/unlocks_controller.rb deleted file mode 100644 index 05191c4eb341f58398b731a654a258b9ebedd4ca..0000000000000000000000000000000000000000 --- a/app/controllers/user/unlocks_controller.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true - -class User::UnlocksController < Devise::UnlocksController - # GET /resource/unlock/new - # def new - # super - # end - - # POST /resource/unlock - # def create - # super - # end - - # GET /resource/unlock?unlock_token=abcdef - # def show - # super - # end - - # protected - - # The path used after sending unlock password instructions - # def after_sending_unlock_instructions_path_for(resource) - # super(resource) - # end - - # The path used after unlocking the resource - # def after_unlock_path_for(resource) - # super(resource) - # end -end diff --git a/app/models/user.rb b/app/models/user.rb index 47567994e9c124940a403b36e6813f0097f614f5..379658a509ada63ec96bc0deace84c2ac3613d77 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,6 +1,2 @@ class User < ApplicationRecord - # Include default devise modules. Others available are: - # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable - devise :database_authenticatable, :registerable, - :recoverable, :rememberable, :validatable end diff --git a/app/views/home/home.html.erb b/app/views/home/home.html.erb index 9139d15a10ffa0f4bb4157120f84acc47633c1b1..e7ed739d099c2802da05356c9ba69277f3ee5660 100644 --- a/app/views/home/home.html.erb +++ b/app/views/home/home.html.erb @@ -12,12 +12,14 @@ <body> <%= yield %> - <% if current_user %> - <%= link_to "View Profile", user_path(current_user.id) , method: :get, class: 'btn btn-info btn-md' %> - <%= link_to "Logout, #{current_user.firstname}?", destroy_user_session_path, method: :delete, class: 'btn btn-warning btn-md' %> + <%= link_to "Authorize", home_test_auth_path, class: 'btn btn-warning btn-md' %> + + <% if session[:logged_in] %> + <%= link_to "Logout", home_test_log_out_path, class: 'btn btn-warning btn-md' %> <% else %> - <%= link_to "Login", new_user_session_path, class: 'btn btn-info btn-md' %> - <%= link_to "Sign up", new_user_registration_path, class: 'btn btn-info btn-md' %> + <%= link_to "Login", home_test_path, class: 'btn btn-info btn-md' %> + <%= link_to "Sign up", home_test_sign_up_path, class: 'btn btn-info btn-md' %> <% end %> + </body> </html> \ No newline at end of file diff --git a/config/database.yml b/config/database.yml index 69da1a50f4c23307f209b62ca20224d3998485ea..de9c1ae299fdc731ca5658b226d6cde53edf04e3 100644 --- a/config/database.yml +++ b/config/database.yml @@ -6,14 +6,6 @@ development: username: root password: group24 database: docker_dev - auth: - adapter: mysql2 - encoding: utf8 - host: db_auth - username: root - password: group24 - database: auth - port: 3307 test: primary: @@ -23,11 +15,3 @@ test: username: root password: group24 database: docker_dev - auth: - adapter: mysql2 - encoding: utf8 - host: db_auth - username: root - password: group24 - database: auth - port: 3307 diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb deleted file mode 100644 index 9d30af066a23936faf4a8d43aaa1bbb27ff3ec53..0000000000000000000000000000000000000000 --- a/config/initializers/devise.rb +++ /dev/null @@ -1,311 +0,0 @@ -# frozen_string_literal: true - -# Assuming you have not yet modified this file, each configuration option below -# is set to its default value. Note that some are commented out while others -# are not: uncommented lines are intended to protect your configuration from -# breaking changes in upgrades (i.e., in the event that future versions of -# Devise change the default values for those options). -# -# Use this hook to configure devise mailer, warden hooks and so forth. -# Many of these configuration options can be set straight in your model. -Devise.setup do |config| - # The secret key used by Devise. Devise uses this key to generate - # random tokens. Changing this key will render invalid all existing - # confirmation, reset password and unlock tokens in the database. - # Devise will use the `secret_key_base` as its `secret_key` - # by default. You can change it below and use your own secret key. - # config.secret_key = 'b6e7b0cbcdaadcdb3cec245948922d7f4141e61cdd9728dbb915211d4833544cef6c8d9ce16f43836ddc691e87cbfc8348008923170a85713ddea735fbc6f027' - - # ==> Controller configuration - # Configure the parent class to the devise controllers. - # config.parent_controller = 'DeviseController' - - # ==> Mailer Configuration - # 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' - - # Configure the class responsible to send e-mails. - # config.mailer = 'Devise::Mailer' - - # Configure the parent class responsible to send e-mails. - # config.parent_mailer = 'ActionMailer::Base' - - # ==> ORM configuration - # Load and configure the ORM. Supports :active_record (default) and - # :mongoid (bson_ext recommended) by default. Other ORMs may be - # available as additional gems. - require 'devise/orm/active_record' - - # ==> Configuration for any authentication mechanism - # Configure which keys are used when authenticating a user. The default is - # just :email. You can configure it to use [:username, :subdomain], so for - # authenticating a user, both parameters are required. Remember that those - # parameters are used only when authenticating and not when retrieving from - # session. If you need permissions, you should implement that in a before filter. - # You can also supply a hash where the value is a boolean determining whether - # or not authentication should be aborted when the value is not present. - # config.authentication_keys = [:email] - - # Configure parameters from the request object used for authentication. Each entry - # given should be a request method and it will automatically be passed to the - # find_for_authentication method and considered in your model lookup. For instance, - # if you set :request_keys to [:subdomain], :subdomain will be used on authentication. - # The same considerations mentioned for authentication_keys also apply to request_keys. - # config.request_keys = [] - - # Configure which authentication keys should be case-insensitive. - # These keys will be downcased upon creating or modifying a user and when used - # to authenticate or find a user. Default is :email. - config.case_insensitive_keys = [:email] - - # Configure which authentication keys should have whitespace stripped. - # These keys will have whitespace before and after removed upon creating or - # modifying a user and when used to authenticate or find a user. Default is :email. - config.strip_whitespace_keys = [:email] - - # Tell if authentication through request.params is enabled. True by default. - # It can be set to an array that will enable params authentication only for the - # given strategies, for example, `config.params_authenticatable = [:database]` will - # enable it only for database (email + password) authentication. - # config.params_authenticatable = true - - # Tell if authentication through HTTP Auth is enabled. False by default. - # It can be set to an array that will enable http authentication only for the - # given strategies, for example, `config.http_authenticatable = [:database]` will - # enable it only for database authentication. - # For API-only applications to support authentication "out-of-the-box", you will likely want to - # enable this with :database unless you are using a custom strategy. - # The supported strategies are: - # :database = Support basic authentication with authentication key + password - # config.http_authenticatable = false - - # If 401 status code should be returned for AJAX requests. True by default. - # config.http_authenticatable_on_xhr = true - - # The realm used in Http Basic Authentication. 'Application' by default. - # config.http_authentication_realm = 'Application' - - # It will change confirmation, password recovery and other workflows - # to behave the same regardless if the e-mail provided was right or wrong. - # Does not affect registerable. - # config.paranoid = true - - # By default Devise will store the user in session. You can skip storage for - # particular strategies by setting this option. - # Notice that if you are skipping storage for all authentication paths, you - # may want to disable generating routes to Devise's sessions controller by - # passing skip: :sessions to `devise_for` in your config/routes.rb - config.skip_session_storage = [:http_auth] - - # By default, Devise cleans up the CSRF token on authentication to - # avoid CSRF token fixation attacks. This means that, when using AJAX - # requests for sign in and sign up, you need to get a new CSRF token - # from the server. You can disable this option at your own risk. - # config.clean_up_csrf_token_on_authentication = true - - # When false, Devise will not attempt to reload routes on eager load. - # This can reduce the time taken to boot the app but if your application - # requires the Devise mappings to be loaded during boot time the application - # won't boot properly. - # config.reload_routes = true - - # ==> Configuration for :database_authenticatable - # For bcrypt, this is the cost for hashing the password and defaults to 12. If - # using other algorithms, it sets how many times you want the password to be hashed. - # The number of stretches used for generating the hashed password are stored - # with the hashed password. This allows you to change the stretches without - # invalidating existing passwords. - # - # Limiting the stretches to just one in testing will increase the performance of - # your test suite dramatically. However, it is STRONGLY RECOMMENDED to not use - # a value less than 10 in other environments. Note that, for bcrypt (the default - # algorithm), the cost increases exponentially with the number of stretches (e.g. - # a value of 20 is already extremely slow: approx. 60 seconds for 1 calculation). - config.stretches = Rails.env.test? ? 1 : 12 - - # Set up a pepper to generate the hashed password. - # config.pepper = 'e694da185d9b3dea263c23431ce6112160fdf6150fe3e7a9c05318624a37d027aa8ef3c4751bbe572c92827760743c879bcca9117ef6edaeb031100fac722ffd' - - # Send a notification to the original email when the user's email is changed. - # config.send_email_changed_notification = false - - # Send a notification email when the user's password is changed. - # config.send_password_change_notification = false - - # ==> Configuration for :confirmable - # A period that the user is allowed to access the website even without - # confirming their account. For instance, if set to 2.days, the user will be - # able to access the website for two days without confirming their account, - # access will be blocked just in the third day. - # You can also set it to nil, which will allow the user to access the website - # without confirming their account. - # Default is 0.days, meaning the user cannot access the website without - # confirming their account. - # config.allow_unconfirmed_access_for = 2.days - - # A period that the user is allowed to confirm their account before their - # token becomes invalid. For example, if set to 3.days, the user can confirm - # their account within 3 days after the mail was sent, but on the fourth day - # their account can't be confirmed with the token any more. - # Default is nil, meaning there is no restriction on how long a user can take - # before confirming their account. - # config.confirm_within = 3.days - - # If true, requires any email changes to be confirmed (exactly the same way as - # initial account confirmation) to be applied. Requires additional unconfirmed_email - # db field (see migrations). Until confirmed, new email is stored in - # unconfirmed_email column, and copied to email column on successful confirmation. - config.reconfirmable = true - - # Defines which key will be used when confirming an account - # config.confirmation_keys = [:email] - - # ==> Configuration for :rememberable - # The time the user will be remembered without asking for credentials again. - # config.remember_for = 2.weeks - - # Invalidates all the remember me tokens when the user signs out. - config.expire_all_remember_me_on_sign_out = true - - # If true, extends the user's remember period when remembered via cookie. - # config.extend_remember_period = false - - # Options to be passed to the created cookie. For instance, you can set - # secure: true in order to force SSL only cookies. - # config.rememberable_options = {} - - # ==> Configuration for :validatable - # Range for password length. - config.password_length = 6..128 - - # Email regex used to validate email formats. It simply asserts that - # one (and only one) @ exists in the given string. This is mainly - # to give user feedback and not to assert the e-mail validity. - config.email_regexp = /\A[^@\s]+@[^@\s]+\z/ - - # ==> Configuration for :timeoutable - # The time you want to timeout the user session without activity. After this - # time the user will be asked for credentials again. Default is 30 minutes. - # config.timeout_in = 30.minutes - - # ==> Configuration for :lockable - # Defines which strategy will be used to lock an account. - # :failed_attempts = Locks an account after a number of failed attempts to sign in. - # :none = No lock strategy. You should handle locking by yourself. - # config.lock_strategy = :failed_attempts - - # Defines which key will be used when locking and unlocking an account - # config.unlock_keys = [:email] - - # Defines which strategy will be used to unlock an account. - # :email = Sends an unlock link to the user email - # :time = Re-enables login after a certain amount of time (see :unlock_in below) - # :both = Enables both strategies - # :none = No unlock strategy. You should handle unlocking by yourself. - # config.unlock_strategy = :both - - # Number of authentication tries before locking an account if lock_strategy - # is failed attempts. - # config.maximum_attempts = 20 - - # Time interval to unlock the account if :time is enabled as unlock_strategy. - # config.unlock_in = 1.hour - - # Warn on the last attempt before the account is locked. - # config.last_attempt_warning = true - - # ==> Configuration for :recoverable - # - # Defines which key will be used when recovering the password for an account - # config.reset_password_keys = [:email] - - # Time interval you can reset your password with a reset password key. - # Don't put a too small interval or your users won't have the time to - # change their passwords. - config.reset_password_within = 6.hours - - # When set to false, does not sign a user in automatically after their password is - # reset. Defaults to true, so a user is signed in automatically after a reset. - # config.sign_in_after_reset_password = true - - # ==> Configuration for :encryptable - # Allow you to use another hashing or encryption algorithm besides bcrypt (default). - # You can use :sha1, :sha512 or algorithms from others authentication tools as - # :clearance_sha1, :authlogic_sha512 (then you should set stretches above to 20 - # for default behavior) and :restful_authentication_sha1 (then you should set - # stretches to 10, and copy REST_AUTH_SITE_KEY to pepper). - # - # Require the `devise-encryptable` gem when using anything other than bcrypt - # config.encryptor = :sha512 - - # ==> Scopes configuration - # Turn scoped views on. Before rendering "sessions/new", it will first check for - # "users/sessions/new". It's turned off by default because it's slower if you - # are using only default views. - # config.scoped_views = false - - # Configure the default scope given to Warden. By default it's the first - # devise role declared in your routes (usually :user). - # config.default_scope = :user - - # Set this configuration to false if you want /users/sign_out to sign out - # only the current scope. By default, Devise signs out all scopes. - # config.sign_out_all_scopes = true - - # ==> Navigation configuration - # Lists the formats that should be treated as navigational. Formats like - # :html, should redirect to the sign in page when the user does not have - # access, but formats like :xml or :json, should return 401. - # - # If you have any extra navigational formats, like :iphone or :mobile, you - # should add them to the navigational formats lists. - # - # The "*/*" below is required to match Internet Explorer requests. - # config.navigational_formats = ['*/*', :html] - - # The default HTTP method used to sign out a resource. Default is :delete. - config.sign_out_via = :delete - - # ==> OmniAuth - # Add a new OmniAuth provider. Check the wiki for more information on setting - # up on your models and hooks. - # config.omniauth :github, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo' - - # ==> Warden configuration - # If you want to use other strategies, that are not supported by Devise, or - # change the failure app, you can configure them inside the config.warden block. - # - # config.warden do |manager| - # manager.intercept_401 = false - # manager.default_strategies(scope: :user).unshift :some_external_strategy - # end - - # ==> Mountable engine configurations - # When using Devise inside an engine, let's call it `MyEngine`, and this engine - # is mountable, there are some extra configurations to be taken into account. - # The following options are available, assuming the engine is mounted as: - # - # mount MyEngine, at: '/my_engine' - # - # The router that invoked `devise_for`, in the example above, would be: - # config.router_name = :my_engine - # - # 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' - - # ==> Turbolinks configuration - # If your app is using Turbolinks, Turbolinks::Controller needs to be included to make redirection work correctly: - # - # ActiveSupport.on_load(:devise_failure_app) do - # include Turbolinks::Controller - # end - - # ==> Configuration for :registerable - - # When set to false, does not sign a user in automatically after their password is - # changed. Defaults to true, so a user is signed in automatically after changing a password. - # config.sign_in_after_change_password = true -end diff --git a/config/routes.rb b/config/routes.rb index 95c5bba2a99555ad730d0e0afa2cd6e6c51ea360..7f206e43b1e9bc0b3355552174266b87f7102559 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,4 @@ Rails.application.routes.draw do - devise_for :users resources :users # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html @@ -10,5 +9,8 @@ Rails.application.routes.draw do get 'user', to: 'user#show' get 'users/password/new', to: 'devise/passwords#new', as: 'password_reset' - + get 'home/test', to: 'home#test' + get 'home/test_sign_up', to: 'home#test_sign_up' + get 'home/test_log_out', to: 'home#test_log_out' + get 'home/test_auth', to: 'home#test_auth' end diff --git a/db/auth_schema.rb b/db/auth_schema.rb index 9036c391e076e97640cb69fd9eac381936256d67..30fe8bb52e2dacc0c32e9e70fe6e059fbebf7bcf 100644 --- a/db/auth_schema.rb +++ b/db/auth_schema.rb @@ -10,20 +10,6 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2022_04_03_154638) do - create_table "users", charset: "utf8", force: :cascade do |t| - t.string "username" - t.string "firstname" - t.string "lastname" - 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.index ["email"], name: "index_users_on_email", unique: true - t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true - end + end diff --git a/db/migrate/20220403154638_add_devise_to_users.rb b/db/migrate/20220403154638_add_devise_to_users.rb deleted file mode 100644 index 98ed9dcd8a2c706ed501b51fd15e77ce2ba6b224..0000000000000000000000000000000000000000 --- a/db/migrate/20220403154638_add_devise_to_users.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true - -class AddDeviseToUsers < ActiveRecord::Migration[7.0] - 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, null: false - # 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, null: false # Only if lock strategy is :failed_attempts - # t.string :unlock_token # Only if unlock strategy is :email or :both - # t.datetime :locked_at - - - # Uncomment below if timestamps were not included in your original model. - # t.timestamps null: false - 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 - 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 diff --git a/db/schema.rb b/db/schema.rb index 9036c391e076e97640cb69fd9eac381936256d67..5257619d7b0d68ebff0ef0d470b6f6168895c623 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,20 +10,13 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2022_04_03_154638) do +ActiveRecord::Schema[7.0].define(version: 2022_04_03_154425) do create_table "users", charset: "utf8", force: :cascade do |t| t.string "username" t.string "firstname" t.string "lastname" 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.index ["email"], name: "index_users_on_email", unique: true - t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true end end diff --git a/db/seeds.rb b/db/seeds.rb index ade10a6e272219bb33fd5dd9665caa3c1e8efe3b..bc25fce30616f55273839e4048381515fcba0ebc 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -5,13 +5,3 @@ # # movies = Movie.create([{ name: "Star Wars" }, { name: "Lord of the Rings" }]) # Character.create(name: "Luke", movie: movies.first) -user1 = User.create({ - :email => "test@surrey.ac.uk", - :password => "123456", - :password_confirmation => "123456", - :firstname => "firstname", - :lastname => "lastname", - :username => "username" -}) - -user1.save! \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index c8a873a3c672be925884d64a4c16095e2ad226ce..23832719cf8119d50e66b528dc04db5fa93ba780 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -39,7 +39,7 @@ services: links: - db_primary auth: - image: driftydirt/group24auth:0.0.4 + image: driftydirt/group24auth:0.0.6 ports: - "3001:3000" depends_on: