From d1e79953127c3e8c1c32b13755671b079022c258 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Thu, 4 Apr 2019 14:56:05 -0500 Subject: [PATCH] Add files via upload --- Sources/SIS/sis-app/config.ru | 11 ++ Sources/SIS/sis-app/config/application.rb | 15 +++ Sources/SIS/sis-app/config/boot.rb | 3 + Sources/SIS/sis-app/config/cable.yml | 9 ++ Sources/SIS/sis-app/config/database.yml | 54 ++++++++ Sources/SIS/sis-app/config/environment.rb | 5 + .../config/environments/development.rb | 54 ++++++++ .../sis-app/config/environments/production.rb | 86 +++++++++++++ .../SIS/sis-app/config/environments/test.rb | 42 +++++++ .../application_controller_renderer.rb | 6 + .../SIS/sis-app/config/initializers/assets.rb | 11 ++ .../initializers/backtrace_silencers.rb | 7 ++ .../config/initializers/cookies_serializer.rb | 5 + .../initializers/filter_parameter_logging.rb | 4 + .../config/initializers/inflections.rb | 16 +++ .../config/initializers/load_ldap_config.rb | 1 + .../sis-app/config/initializers/mime_types.rb | 4 + .../initializers/new_framework_defaults.rb | 24 ++++ .../config/initializers/session_store.rb | 3 + .../config/initializers/wrap_parameters.rb | 14 +++ Sources/SIS/sis-app/config/ldap.yml | 8 ++ Sources/SIS/sis-app/config/locales/en.yml | 23 ++++ Sources/SIS/sis-app/config/puma.rb | 47 +++++++ Sources/SIS/sis-app/config/routes.rb | 5 + Sources/SIS/sis-app/config/secrets.yml | 22 ++++ Sources/SIS/sis-app/config/spring.rb | 6 + .../migrate/20170904204936_create_courses.rb | 10 ++ .../20170904205629_create_courses_users.rb | 8 ++ .../db/migrate/20170908183822_create_users.rb | 15 +++ .../20170918201150_addlfname_to_users.rb | 5 + Sources/SIS/sis-app/db/schema.rb | 40 ++++++ Sources/SIS/sis-app/db/seeds.rb | 115 ++++++++++++++++++ 32 files changed, 678 insertions(+) create mode 100644 Sources/SIS/sis-app/config.ru create mode 100644 Sources/SIS/sis-app/config/application.rb create mode 100644 Sources/SIS/sis-app/config/boot.rb create mode 100644 Sources/SIS/sis-app/config/cable.yml create mode 100644 Sources/SIS/sis-app/config/database.yml create mode 100644 Sources/SIS/sis-app/config/environment.rb create mode 100644 Sources/SIS/sis-app/config/environments/development.rb create mode 100644 Sources/SIS/sis-app/config/environments/production.rb create mode 100644 Sources/SIS/sis-app/config/environments/test.rb create mode 100644 Sources/SIS/sis-app/config/initializers/application_controller_renderer.rb create mode 100644 Sources/SIS/sis-app/config/initializers/assets.rb create mode 100644 Sources/SIS/sis-app/config/initializers/backtrace_silencers.rb create mode 100644 Sources/SIS/sis-app/config/initializers/cookies_serializer.rb create mode 100644 Sources/SIS/sis-app/config/initializers/filter_parameter_logging.rb create mode 100644 Sources/SIS/sis-app/config/initializers/inflections.rb create mode 100644 Sources/SIS/sis-app/config/initializers/load_ldap_config.rb create mode 100644 Sources/SIS/sis-app/config/initializers/mime_types.rb create mode 100644 Sources/SIS/sis-app/config/initializers/new_framework_defaults.rb create mode 100644 Sources/SIS/sis-app/config/initializers/session_store.rb create mode 100644 Sources/SIS/sis-app/config/initializers/wrap_parameters.rb create mode 100644 Sources/SIS/sis-app/config/ldap.yml create mode 100644 Sources/SIS/sis-app/config/locales/en.yml create mode 100644 Sources/SIS/sis-app/config/puma.rb create mode 100644 Sources/SIS/sis-app/config/routes.rb create mode 100644 Sources/SIS/sis-app/config/secrets.yml create mode 100644 Sources/SIS/sis-app/config/spring.rb create mode 100644 Sources/SIS/sis-app/db/migrate/20170904204936_create_courses.rb create mode 100644 Sources/SIS/sis-app/db/migrate/20170904205629_create_courses_users.rb create mode 100644 Sources/SIS/sis-app/db/migrate/20170908183822_create_users.rb create mode 100644 Sources/SIS/sis-app/db/migrate/20170918201150_addlfname_to_users.rb create mode 100644 Sources/SIS/sis-app/db/schema.rb create mode 100644 Sources/SIS/sis-app/db/seeds.rb diff --git a/Sources/SIS/sis-app/config.ru b/Sources/SIS/sis-app/config.ru new file mode 100644 index 0000000..d1d30d1 --- /dev/null +++ b/Sources/SIS/sis-app/config.ru @@ -0,0 +1,11 @@ +# This file is used by Rack-based servers to start the application. + +require_relative 'config/environment' + +map '/sis' do + run Rails.application +end + +map '/' do + run Rails.application +end diff --git a/Sources/SIS/sis-app/config/application.rb b/Sources/SIS/sis-app/config/application.rb new file mode 100644 index 0000000..858e692 --- /dev/null +++ b/Sources/SIS/sis-app/config/application.rb @@ -0,0 +1,15 @@ +require_relative 'boot' + +require 'rails/all' + +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) + +module Myapp + class Application < Rails::Application + # Settings in config/environments/* take precedence over those specified here. + # Application configuration should go into files in config/initializers + # -- all .rb files in that directory are automatically loaded. + end +end diff --git a/Sources/SIS/sis-app/config/boot.rb b/Sources/SIS/sis-app/config/boot.rb new file mode 100644 index 0000000..30f5120 --- /dev/null +++ b/Sources/SIS/sis-app/config/boot.rb @@ -0,0 +1,3 @@ +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) + +require 'bundler/setup' # Set up gems listed in the Gemfile. diff --git a/Sources/SIS/sis-app/config/cable.yml b/Sources/SIS/sis-app/config/cable.yml new file mode 100644 index 0000000..0bbde6f --- /dev/null +++ b/Sources/SIS/sis-app/config/cable.yml @@ -0,0 +1,9 @@ +development: + adapter: async + +test: + adapter: async + +production: + adapter: redis + url: redis://localhost:6379/1 diff --git a/Sources/SIS/sis-app/config/database.yml b/Sources/SIS/sis-app/config/database.yml new file mode 100644 index 0000000..f87f9d6 --- /dev/null +++ b/Sources/SIS/sis-app/config/database.yml @@ -0,0 +1,54 @@ +# MySQL. Versions 5.0 and up are supported. +# +# Install the MySQL driver +# gem install mysql2 +# +# Ensure the MySQL gem is defined in your Gemfile +# gem 'mysql2' +# +# And be sure to use new-style password hashing: +# http://dev.mysql.com/doc/refman/5.7/en/old-client.html +# +default: &default + adapter: mysql2 + encoding: utf8 + pool: 5 + username: root + password: + host: tier-demo-mysql + +development: + <<: *default + database: myapp_development + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + <<: *default + database: myapp_test + +# As with config/secrets.yml, you never want to store sensitive information, +# like your database password, in your source code. If your source code is +# ever seen by anyone, they now have access to your database. +# +# Instead, provide the password as a unix environment variable when you boot +# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database +# for a full rundown on how to provide these environment variables in a +# production deployment. +# +# On Heroku and other platform providers, you may have a full connection URL +# available as an environment variable. For example: +# +# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" +# +# You can use this database configuration with: +# +# production: +# url: <%= ENV['DATABASE_URL'] %> +# +production: + <<: *default + database: myapp_production + username: myapp + password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %> diff --git a/Sources/SIS/sis-app/config/environment.rb b/Sources/SIS/sis-app/config/environment.rb new file mode 100644 index 0000000..426333b --- /dev/null +++ b/Sources/SIS/sis-app/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require_relative 'application' + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/Sources/SIS/sis-app/config/environments/development.rb b/Sources/SIS/sis-app/config/environments/development.rb new file mode 100644 index 0000000..6f71970 --- /dev/null +++ b/Sources/SIS/sis-app/config/environments/development.rb @@ -0,0 +1,54 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports. + config.consider_all_requests_local = true + + # Enable/disable caching. By default caching is disabled. + if Rails.root.join('tmp/caching-dev.txt').exist? + config.action_controller.perform_caching = true + + config.cache_store = :memory_store + config.public_file_server.headers = { + 'Cache-Control' => 'public, max-age=172800' + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + config.action_mailer.perform_caching = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true + + # Suppress logger output for asset requests. + config.assets.quiet = true + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true + + # Use an evented file watcher to asynchronously detect changes in source code, + # routes, locales, etc. This feature depends on the listen gem. + config.file_watcher = ActiveSupport::EventedFileUpdateChecker +end diff --git a/Sources/SIS/sis-app/config/environments/production.rb b/Sources/SIS/sis-app/config/environments/production.rb new file mode 100644 index 0000000..a44188a --- /dev/null +++ b/Sources/SIS/sis-app/config/environments/production.rb @@ -0,0 +1,86 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? + + # Compress JavaScripts and CSS. + config.assets.js_compressor = :uglifier + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + + # Mount Action Cable outside main process or domain + # config.action_cable.mount_path = nil + # config.action_cable.url = 'wss://example.com/cable' + # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. + config.log_level = :debug + + # Prepend all log lines with the following tags. + config.log_tags = [ :request_id ] + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Use a real queuing backend for Active Job (and separate queues per environment) + # config.active_job.queue_adapter = :resque + # config.active_job.queue_name_prefix = "myapp_#{Rails.env}" + config.action_mailer.perform_caching = false + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Use a different logger for distributed setups. + # require 'syslog/logger' + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false +end diff --git a/Sources/SIS/sis-app/config/environments/test.rb b/Sources/SIS/sis-app/config/environments/test.rb new file mode 100644 index 0000000..30587ef --- /dev/null +++ b/Sources/SIS/sis-app/config/environments/test.rb @@ -0,0 +1,42 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + 'Cache-Control' => 'public, max-age=3600' + } + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + config.action_mailer.perform_caching = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true +end diff --git a/Sources/SIS/sis-app/config/initializers/application_controller_renderer.rb b/Sources/SIS/sis-app/config/initializers/application_controller_renderer.rb new file mode 100644 index 0000000..51639b6 --- /dev/null +++ b/Sources/SIS/sis-app/config/initializers/application_controller_renderer.rb @@ -0,0 +1,6 @@ +# Be sure to restart your server when you modify this file. + +# ApplicationController.renderer.defaults.merge!( +# http_host: 'example.org', +# https: false +# ) diff --git a/Sources/SIS/sis-app/config/initializers/assets.rb b/Sources/SIS/sis-app/config/initializers/assets.rb new file mode 100644 index 0000000..01ef3e6 --- /dev/null +++ b/Sources/SIS/sis-app/config/initializers/assets.rb @@ -0,0 +1,11 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = '1.0' + +# Add additional assets to the asset load path +# Rails.application.config.assets.paths << Emoji.images_path + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in app/assets folder are already added. +# Rails.application.config.assets.precompile += %w( search.js ) diff --git a/Sources/SIS/sis-app/config/initializers/backtrace_silencers.rb b/Sources/SIS/sis-app/config/initializers/backtrace_silencers.rb new file mode 100644 index 0000000..59385cd --- /dev/null +++ b/Sources/SIS/sis-app/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/Sources/SIS/sis-app/config/initializers/cookies_serializer.rb b/Sources/SIS/sis-app/config/initializers/cookies_serializer.rb new file mode 100644 index 0000000..5a6a32d --- /dev/null +++ b/Sources/SIS/sis-app/config/initializers/cookies_serializer.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. + +# Specify a serializer for the signed and encrypted cookie jars. +# Valid options are :json, :marshal, and :hybrid. +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/Sources/SIS/sis-app/config/initializers/filter_parameter_logging.rb b/Sources/SIS/sis-app/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000..4a994e1 --- /dev/null +++ b/Sources/SIS/sis-app/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:password] diff --git a/Sources/SIS/sis-app/config/initializers/inflections.rb b/Sources/SIS/sis-app/config/initializers/inflections.rb new file mode 100644 index 0000000..ac033bf --- /dev/null +++ b/Sources/SIS/sis-app/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/Sources/SIS/sis-app/config/initializers/load_ldap_config.rb b/Sources/SIS/sis-app/config/initializers/load_ldap_config.rb new file mode 100644 index 0000000..41a8608 --- /dev/null +++ b/Sources/SIS/sis-app/config/initializers/load_ldap_config.rb @@ -0,0 +1 @@ +LDAP_CONFIG = YAML.load_file("#{Rails.root}/config/ldap.yml")[Rails.env] diff --git a/Sources/SIS/sis-app/config/initializers/mime_types.rb b/Sources/SIS/sis-app/config/initializers/mime_types.rb new file mode 100644 index 0000000..dc18996 --- /dev/null +++ b/Sources/SIS/sis-app/config/initializers/mime_types.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/Sources/SIS/sis-app/config/initializers/new_framework_defaults.rb b/Sources/SIS/sis-app/config/initializers/new_framework_defaults.rb new file mode 100644 index 0000000..0706caf --- /dev/null +++ b/Sources/SIS/sis-app/config/initializers/new_framework_defaults.rb @@ -0,0 +1,24 @@ +# Be sure to restart your server when you modify this file. +# +# This file contains migration options to ease your Rails 5.0 upgrade. +# +# Read the Rails 5.0 release notes for more info on each option. + +# Enable per-form CSRF tokens. Previous versions had false. +Rails.application.config.action_controller.per_form_csrf_tokens = true + +# Enable origin-checking CSRF mitigation. Previous versions had false. +Rails.application.config.action_controller.forgery_protection_origin_check = true + +# Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`. +# Previous versions had false. +ActiveSupport.to_time_preserves_timezone = true + +# Require `belongs_to` associations by default. Previous versions had false. +Rails.application.config.active_record.belongs_to_required_by_default = true + +# Do not halt callback chains when a callback returns false. Previous versions had true. +ActiveSupport.halt_callback_chains_on_return_false = false + +# Configure SSL options to enable HSTS with subdomains. Previous versions had false. +Rails.application.config.ssl_options = { hsts: { subdomains: true } } diff --git a/Sources/SIS/sis-app/config/initializers/session_store.rb b/Sources/SIS/sis-app/config/initializers/session_store.rb new file mode 100644 index 0000000..bf64a29 --- /dev/null +++ b/Sources/SIS/sis-app/config/initializers/session_store.rb @@ -0,0 +1,3 @@ +# Be sure to restart your server when you modify this file. + +Rails.application.config.session_store :cookie_store, key: '_myapp_session' diff --git a/Sources/SIS/sis-app/config/initializers/wrap_parameters.rb b/Sources/SIS/sis-app/config/initializers/wrap_parameters.rb new file mode 100644 index 0000000..bbfc396 --- /dev/null +++ b/Sources/SIS/sis-app/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/Sources/SIS/sis-app/config/ldap.yml b/Sources/SIS/sis-app/config/ldap.yml new file mode 100644 index 0000000..0d1c909 --- /dev/null +++ b/Sources/SIS/sis-app/config/ldap.yml @@ -0,0 +1,8 @@ +# config/ldap.yml +# LDAP server configuration settings +development: + host: tier-demo-ldap + port: 389 + base: ou=people,dc=example,dc=edu + admin: cn=admin,dc=example,dc=edu + pass: password diff --git a/Sources/SIS/sis-app/config/locales/en.yml b/Sources/SIS/sis-app/config/locales/en.yml new file mode 100644 index 0000000..0653957 --- /dev/null +++ b/Sources/SIS/sis-app/config/locales/en.yml @@ -0,0 +1,23 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# To learn more, please read the Rails Internationalization guide +# available at http://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/Sources/SIS/sis-app/config/puma.rb b/Sources/SIS/sis-app/config/puma.rb new file mode 100644 index 0000000..c7f311f --- /dev/null +++ b/Sources/SIS/sis-app/config/puma.rb @@ -0,0 +1,47 @@ +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 5 threads for minimum +# and maximum, this matches the default thread size of Active Record. +# +threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i +threads threads_count, threads_count + +# Specifies the `port` that Puma will listen on to receive requests, default is 3000. +# +port ENV.fetch("PORT") { 3000 } + +# Specifies the `environment` that Puma will run in. +# +environment ENV.fetch("RAILS_ENV") { "development" } + +# Specifies the number of `workers` to boot in clustered mode. +# Workers are forked webserver processes. If using threads and workers together +# the concurrency of the application would be max `threads` * `workers`. +# Workers do not work on JRuby or Windows (both of which do not support +# processes). +# +# workers ENV.fetch("WEB_CONCURRENCY") { 2 } + +# Use the `preload_app!` method when specifying a `workers` number. +# This directive tells Puma to first boot the application and load code +# before forking the application. This takes advantage of Copy On Write +# process behavior so workers use less memory. If you use this option +# you need to make sure to reconnect any threads in the `on_worker_boot` +# block. +# +# preload_app! + +# The code in the `on_worker_boot` will be called if you are using +# clustered mode by specifying a number of `workers`. After each worker +# process is booted this block will be run, if you are using `preload_app!` +# option you will want to use this block to reconnect to any threads +# or connections that may have been created at application boot, Ruby +# cannot share connections between processes. +# +# on_worker_boot do +# ActiveRecord::Base.establish_connection if defined?(ActiveRecord) +# end + +# Allow puma to be restarted by `rails restart` command. +plugin :tmp_restart diff --git a/Sources/SIS/sis-app/config/routes.rb b/Sources/SIS/sis-app/config/routes.rb new file mode 100644 index 0000000..c9298db --- /dev/null +++ b/Sources/SIS/sis-app/config/routes.rb @@ -0,0 +1,5 @@ +Rails.application.routes.draw do + resources :courses + resources :users + # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html +end diff --git a/Sources/SIS/sis-app/config/secrets.yml b/Sources/SIS/sis-app/config/secrets.yml new file mode 100644 index 0000000..ffd5062 --- /dev/null +++ b/Sources/SIS/sis-app/config/secrets.yml @@ -0,0 +1,22 @@ +# Be sure to restart your server when you modify this file. + +# Your secret key is used for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! + +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +# You can use `rails secret` to generate a secure secret key. + +# Make sure the secrets in this file are kept private +# if you're sharing your code publicly. + +development: + secret_key_base: 63106056cab3bed9411929fee1c8487b05310b655e36196f6ada1fadd4efe1b98a6f09232135177526c660d541fccac960719b8c0d0d10df921c9797cd2e7500 + +test: + secret_key_base: 4f9fcebe5a186db5cd843b3538e116be730f8933a50cee964acee4585299575c286fdbd2bfb3b10040c6654faf8e137d1f37390f4f90ccb8ecdc3d02bea45c51 + +# Do not keep production secrets in the repository, +# instead read values from the environment. +production: + secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> diff --git a/Sources/SIS/sis-app/config/spring.rb b/Sources/SIS/sis-app/config/spring.rb new file mode 100644 index 0000000..c9119b4 --- /dev/null +++ b/Sources/SIS/sis-app/config/spring.rb @@ -0,0 +1,6 @@ +%w( + .ruby-version + .rbenv-vars + tmp/restart.txt + tmp/caching-dev.txt +).each { |path| Spring.watch(path) } diff --git a/Sources/SIS/sis-app/db/migrate/20170904204936_create_courses.rb b/Sources/SIS/sis-app/db/migrate/20170904204936_create_courses.rb new file mode 100644 index 0000000..0e5cabb --- /dev/null +++ b/Sources/SIS/sis-app/db/migrate/20170904204936_create_courses.rb @@ -0,0 +1,10 @@ +class CreateCourses < ActiveRecord::Migration[5.0] + def change + create_table :courses do |t| + t.string :course_name + t.string :course_number + + t.timestamps + end + end +end diff --git a/Sources/SIS/sis-app/db/migrate/20170904205629_create_courses_users.rb b/Sources/SIS/sis-app/db/migrate/20170904205629_create_courses_users.rb new file mode 100644 index 0000000..4a1e772 --- /dev/null +++ b/Sources/SIS/sis-app/db/migrate/20170904205629_create_courses_users.rb @@ -0,0 +1,8 @@ +class CreateCoursesUsers < ActiveRecord::Migration[5.0] + def change + create_table :courses_users, :id => false do |t| + t.integer :course_id + t.integer :user_id + end + end +end diff --git a/Sources/SIS/sis-app/db/migrate/20170908183822_create_users.rb b/Sources/SIS/sis-app/db/migrate/20170908183822_create_users.rb new file mode 100644 index 0000000..439196f --- /dev/null +++ b/Sources/SIS/sis-app/db/migrate/20170908183822_create_users.rb @@ -0,0 +1,15 @@ +class CreateUsers < ActiveRecord::Migration[5.0] + def change + create_table :users do |t| + t.string :uid + t.string :givenname + t.string :surname + t.string :fullName + t.string :description + t.string :email + t.string :password + + t.timestamps + end + end +end diff --git a/Sources/SIS/sis-app/db/migrate/20170918201150_addlfname_to_users.rb b/Sources/SIS/sis-app/db/migrate/20170918201150_addlfname_to_users.rb new file mode 100644 index 0000000..b56a42d --- /dev/null +++ b/Sources/SIS/sis-app/db/migrate/20170918201150_addlfname_to_users.rb @@ -0,0 +1,5 @@ +class AddlfnameToUsers < ActiveRecord::Migration[5.0] + def change + add_column :users, :lfname, :string + end +end diff --git a/Sources/SIS/sis-app/db/schema.rb b/Sources/SIS/sis-app/db/schema.rb new file mode 100644 index 0000000..cd16238 --- /dev/null +++ b/Sources/SIS/sis-app/db/schema.rb @@ -0,0 +1,40 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 20170918201150) do + + create_table "courses", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| + t.string "course_name" + t.string "course_number" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "courses_users", id: false, force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| + t.integer "course_id" + t.integer "user_id" + end + + create_table "users", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| + t.string "uid" + t.string "givenname" + t.string "surname" + t.string "fullName" + t.string "description" + t.string "email" + t.string "password" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "lfname" + end + +end diff --git a/Sources/SIS/sis-app/db/seeds.rb b/Sources/SIS/sis-app/db/seeds.rb new file mode 100644 index 0000000..b3fa9f9 --- /dev/null +++ b/Sources/SIS/sis-app/db/seeds.rb @@ -0,0 +1,115 @@ +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup). +# +# Examples: +# +# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) +# Character.create(name: 'Luke', movie: movies.first) +Course.create(course_name: 'Intro to Computer Science', course_number: 'CS101') +Course.create(course_name: 'Intro to Programming', course_number: 'CS102') +Course.create(course_name: 'Trust and Identity in Higher Education and Research', course_number: 'TIER101') +Course.create(course_name: 'Intermediate Algebra', course_number: 'MATH101') +Course.create(course_name: 'Intro to Accounting', course_number: 'ACCT101') +User.create(uid: 'tjordan', givenname: 'Tom', surname: 'Jordan', fullName: 'Tom Jordan', lfname: 'Jordan, Tom', email: 'tom.jordan@wisc.edu', description: 'Jordan, Tom - tom.jordan@wisc.edu', password: '12345') +User.create(uid: 'jjminer', givenname: 'Jon', surname: 'Miner', fullName: 'Jon Miner', lfname: 'Miner, Jon', email: 'jon.miner@wisc.edu', description: 'Miner, Jon - jon.miner@wisc.edu', password: '12345') +User.create(uid: 'jbabb', givenname: 'James', surname: 'Babb', fullName: 'James Babb', lfname: 'Babb, James', email: 'james.babb@wisc.edu', description: 'Babb, James - james.babb@wisc.edu', password: '12345') +User.create(uid: 'rdavis805', givenname: 'Robert', surname: 'Davis', fullName: 'Robert Davis', lfname: 'Davis, Robert', email: 'rdavis805@example.edu', description: 'Davis, Robert - rdavis805@example.edu', password: '12345') +User.create(uid: 'kbrown599', givenname: 'Karl', surname: 'Brown', fullName: 'Karl Brown', lfname: 'Brown, Karl', email: 'kbrown599@example.edu', description: 'Brown, Karl - kbrown599@example.edu', password: '12345') +User.create(uid: 'dmorrison676', givenname: 'David', surname: 'Morrison', fullName: 'David Morrison', lfname: 'Morrison, David', email: 'dmorrison676@example.edu', description: 'Morrison, David - dmorrison676@example.edu', password: '12345') +User.create(uid: 'jwalters336', givenname: 'James', surname: 'Walters', fullName: 'James Walters', lfname: 'Walters, James', email: 'jwalters336@example.edu', description: 'Walters, James - jwalters336@example.edu', password: '12345') +User.create(uid: 'broberts', givenname: 'Bill', surname: 'Roberts', fullName: 'Bill Roberts', lfname: 'Roberts, Bill', email: 'broberts@example.edu', description: 'Roberts, Bill - broberts@example.edu', password: '12345') +User.create(uid: 'manderson752', givenname: 'Michael', surname: 'Anderson', fullName: 'Michael Anderson', lfname: 'Anderson, Michael', email: 'manderson752@example.edu', description: 'Anderson, Michael - manderson752@example.edu', password: '12345') +User.create(uid: 'wmartinez', givenname: 'William', surname: 'Martinez', fullName: 'William Martinez', lfname: 'Martinez, William', email: 'wmartinez@example.edu', description: 'Martinez, William - wmartinez@example.edu', password: '12345') +User.create(uid: 'escott', givenname: 'Eric', surname: 'Scott', fullName: 'Eric Scott', lfname: 'Scott, Eric', email: 'escott@example.edu', description: 'Scott, Eric - escott@example.edu', password: '12345') +User.create(uid: 'kgonazles778', givenname: 'Karoline', surname: 'Gonazles', fullName: 'Karoline Gonazles', lfname: 'Gonazles, Karoline', email: 'kgonazles778@example.edu', description: 'Gonazles, Karoline - kgonazles778@example.edu', password: '12345') +User.create(uid: 'mprice775', givenname: 'Michael', surname: 'Price', fullName: 'Michael Price', lfname: 'Price, Michael', email: 'mprice775@example.edu', description: 'Price, Michael - mprice775@example.edu', password: '12345') +User.create(uid: 'hwhite640', givenname: 'Heather', surname: 'White', fullName: 'Heather White', lfname: 'White, Heather', email: 'hwhite640@example.edu', description: 'White, Heather - hwhite640@example.edu', password: '12345') +User.create(uid: 'bgrady', givenname: 'Betty', surname: 'Grady', fullName: 'Betty Grady', lfname: 'Grady, Betty', email: 'bgrady@example.edu', description: 'Grady, Betty - bgrady@example.edu', password: '12345') +User.create(uid: 'jdoe', givenname: 'James', surname: 'Doe', fullName: 'James Doe', lfname: 'Doe, James', email: 'jdoe@example.edu', description: 'Doe, James - jdoe@example.edu', password: '12345') +User.create(uid: 'dlangenberg61', givenname: 'Donna', surname: 'Langenberg', fullName: 'Donna Langenberg', lfname: 'Langenberg, Donna', email: 'dlangenberg61@example.edu', description: 'Langenberg, Donna - dlangenberg61@example.edu', password: '12345') +User.create(uid: 'lroberts776', givenname: 'Lori', surname: 'Roberts', fullName: 'Lori Roberts', lfname: 'Roberts, Lori', email: 'lroberts776@example.edu', description: 'Roberts, Lori - lroberts776@example.edu', password: '12345') +User.create(uid: 'mlewis', givenname: 'Michael', surname: 'Lewis', fullName: 'Michael Lewis', lfname: 'Lewis, Michael', email: 'mlewis@example.edu', description: 'Lewis, Michael - mlewis@example.edu', password: '12345') +User.create(uid: 'ganderson555', givenname: 'Greg', surname: 'Anderson', fullName: 'Greg Anderson', lfname: 'Anderson, Greg', email: 'ganderson555@example.edu', description: 'Anderson, Greg - ganderson555@example.edu', password: '12345') +User.create(uid: 'ldavis540', givenname: 'Lisa', surname: 'Davis', fullName: 'Lisa Davis', lfname: 'Davis, Lisa', email: 'ldavis540@example.edu', description: 'Davis, Lisa - ldavis540@example.edu', password: '12345') +User.create(uid: 'cdavis900', givenname: 'Colin', surname: 'Davis', fullName: 'Colin Davis', lfname: 'Davis, Colin', email: 'cdavis900@example.edu', description: 'Davis, Colin - cdavis900@example.edu', password: '12345') +User.create(uid: 'bwhite551', givenname: 'Bill', surname: 'White', fullName: 'Bill White', lfname: 'White, Bill', email: 'bwhite551@example.edu', description: 'White, Bill - bwhite551@example.edu', password: '12345') +User.create(uid: 'jclark826', givenname: 'Jennifer', surname: 'Clark', fullName: 'Jennifer Clark', lfname: 'Clark, Jennifer', email: 'jclark826@example.edu', description: 'Clark, Jennifer - jclark826@example.edu', password: '12345') +User.create(uid: 'jhenderson', givenname: 'John', surname: 'Henderson', fullName: 'John Henderson', lfname: 'Henderson, John', email: 'jhenderson@example.edu', description: 'Henderson, John - jhenderson@example.edu', password: '12345') +User.create(uid: 'tprice', givenname: 'Thomas', surname: 'Price', fullName: 'Thomas Price', lfname: 'Price, Thomas', email: 'tprice@example.edu', description: 'Price, Thomas - tprice@example.edu', password: '12345') +User.create(uid: 'tbrown767', givenname: 'Thomas', surname: 'Brown', fullName: 'Thomas Brown', lfname: 'Brown, Thomas', email: 'tbrown767@example.edu', description: 'Brown, Thomas - tbrown767@example.edu', password: '12345') +User.create(uid: 'ewalters', givenname: 'Erik', surname: 'Walters', fullName: 'Erik Walters', lfname: 'Walters, Erik', email: 'ewalters@example.edu', description: 'Walters, Erik - ewalters@example.edu', password: '12345') +User.create(uid: 'bmorrison655', givenname: 'Betty', surname: 'Morrison', fullName: 'Betty Morrison', lfname: 'Morrison, Betty', email: 'bmorrison655@example.edu', description: 'Morrison, Betty - bmorrison655@example.edu', password: '12345') +User.create(uid: 'mgasper', givenname: 'Mary', surname: 'Gasper', fullName: 'Mary Gasper', lfname: 'Gasper, Mary', email: 'mgasper@example.edu', description: 'Gasper, Mary - mgasper@example.edu', password: '12345') +User.create(uid: 'lmartinez', givenname: 'Lori', surname: 'Martinez', fullName: 'Lori Martinez', lfname: 'Martinez, Lori', email: 'lmartinez@example.edu', description: 'Martinez, Lori - lmartinez@example.edu', password: '12345') +User.create(uid: 'ethompson628', givenname: 'Erik', surname: 'Thompson', fullName: 'Erik Thompson', lfname: 'Thompson, Erik', email: 'ethompson628@example.edu', description: 'Thompson, Erik - ethompson628@example.edu', password: '12345') +User.create(uid: 'mwhite227', givenname: 'Marie', surname: 'White', fullName: 'Marie White', lfname: 'White, Marie', email: 'mwhite227@example.edu', description: 'White, Marie - mwhite227@example.edu', password: '12345') +User.create(uid: 'tgasper854', givenname: 'Thomas', surname: 'Gasper', fullName: 'Thomas Gasper', lfname: 'Gasper, Thomas', email: 'tgasper854@example.edu', description: 'Gasper, Thomas - tgasper854@example.edu', password: '12345') +User.create(uid: 'lhenderson949', givenname: 'Lisa', surname: 'Henderson', fullName: 'Lisa Henderson', lfname: 'Henderson, Lisa', email: 'lhenderson949@example.edu', description: 'Henderson, Lisa - lhenderson949@example.edu', password: '12345') +User.create(uid: 'rbutler', givenname: 'Robert', surname: 'Butler', fullName: 'Robert Butler', lfname: 'Butler, Robert', email: 'rbutler@example.edu', description: 'Butler, Robert - rbutler@example.edu', password: '12345') +User.create(uid: 'banderson971', givenname: 'Betty', surname: 'Anderson', fullName: 'Betty Anderson', lfname: 'Anderson, Betty', email: 'banderson971@example.edu', description: 'Anderson, Betty - banderson971@example.edu', password: '12345') +User.create(uid: 'jlewis917', givenname: 'James', surname: 'Lewis', fullName: 'James Lewis', lfname: 'Lewis, James', email: 'jlewis917@example.edu', description: 'Lewis, James - jlewis917@example.edu', password: '12345') +User.create(uid: 'lwalters703', givenname: 'Lori', surname: 'Walters', fullName: 'Lori Walters', lfname: 'Walters, Lori', email: 'lwalters703@example.edu', description: 'Walters, Lori - lwalters703@example.edu', password: '12345') +User.create(uid: 'mprice764', givenname: 'Marie', surname: 'Price', fullName: 'Marie Price', lfname: 'Price, Marie', email: 'mprice764@example.edu', description: 'Price, Marie - mprice764@example.edu', password: '12345') +User.create(uid: 'lwilliams', givenname: 'Lisa', surname: 'Williams', fullName: 'Lisa Williams', lfname: 'Williams, Lisa', email: 'lwilliams@example.edu', description: 'Williams, Lisa - lwilliams@example.edu', password: '12345') +User.create(uid: 'amorrison30', givenname: 'Ann', surname: 'Morrison', fullName: 'Ann Morrison', lfname: 'Morrison, Ann', email: 'amorrison30@example.edu', description: 'Morrison, Ann - amorrison30@example.edu', password: '12345') +User.create(uid: 'plee719', givenname: 'Paul', surname: 'Lee', fullName: 'Paul Lee', lfname: 'Lee, Paul', email: 'plee719@example.edu', description: 'Lee, Paul - plee719@example.edu', password: '12345') +User.create(uid: 'klopez326', givenname: 'Kiersten', surname: 'Lopez', fullName: 'Kiersten Lopez', lfname: 'Lopez, Kiersten', email: 'klopez326@example.edu', description: 'Lopez, Kiersten - klopez326@example.edu', password: '12345') +User.create(uid: 'nlangenberg820', givenname: 'Nancy', surname: 'Langenberg', fullName: 'Nancy Langenberg', lfname: 'Langenberg, Nancy', email: 'nlangenberg820@example.edu', description: 'Langenberg, Nancy - nlangenberg820@example.edu', password: '12345') +User.create(uid: 'klewis712', givenname: 'Karl', surname: 'Lewis', fullName: 'Karl Lewis', lfname: 'Lewis, Karl', email: 'klewis712@example.edu', description: 'Lewis, Karl - klewis712@example.edu', password: '12345') +User.create(uid: 'dclark720', givenname: 'Donna', surname: 'Clark', fullName: 'Donna Clark', lfname: 'Clark, Donna', email: 'dclark720@example.edu', description: 'Clark, Donna - dclark720@example.edu', password: '12345') +User.create(uid: 'jjohnson735', givenname: 'Jennifer', surname: 'Johnson', fullName: 'Jennifer Johnson', lfname: 'Johnson, Jennifer', email: 'jjohnson735@example.edu', description: 'Johnson, Jennifer - jjohnson735@example.edu', password: '12345') +User.create(uid: 'bwhite', givenname: 'Blake', surname: 'White', fullName: 'Blake White', lfname: 'White, Blake', email: 'bwhite@example.edu', description: 'White, Blake - bwhite@example.edu', password: '12345') +User.create(uid: 'jdavis904', givenname: 'Jo', surname: 'Davis', fullName: 'Jo Davis', lfname: 'Davis, Jo', email: 'jdavis904@example.edu', description: 'Davis, Jo - jdavis904@example.edu', password: '12345') +User.create(uid: 'jwhite265', givenname: 'James', surname: 'White', fullName: 'James White', lfname: 'White, James', email: 'jwhite265@example.edu', description: 'White, James - jwhite265@example.edu', password: '12345') +User.create(uid: 'edavis809', givenname: 'Eric', surname: 'Davis', fullName: 'Eric Davis', lfname: 'Davis, Eric', email: 'edavis809@example.edu', description: 'Davis, Eric - edavis809@example.edu', password: '12345') +User.create(uid: 'swalters', givenname: 'Sarah', surname: 'Walters', fullName: 'Sarah Walters', lfname: 'Walters, Sarah', email: 'swalters@example.edu', description: 'Walters, Sarah - swalters@example.edu', password: '12345') +User.create(uid: 'svales', givenname: 'Sarah', surname: 'Vales', fullName: 'Sarah Vales', lfname: 'Vales, Sarah', email: 'svales@example.edu', description: 'Vales, Sarah - svales@example.edu', password: '12345') +User.create(uid: 'mgonazles', givenname: 'Michael', surname: 'Gonazles', fullName: 'Michael Gonazles', lfname: 'Gonazles, Michael', email: 'mgonazles@example.edu', description: 'Gonazles, Michael - mgonazles@example.edu', password: '12345') +User.create(uid: 'kwalters', givenname: 'Karl', surname: 'Walters', fullName: 'Karl Walters', lfname: 'Walters, Karl', email: 'kwalters@example.edu', description: 'Walters, Karl - kwalters@example.edu', password: '12345') +User.create(uid: 'bwalters', givenname: 'Betty', surname: 'Walters', fullName: 'Betty Walters', lfname: 'Walters, Betty', email: 'bwalters@example.edu', description: 'Walters, Betty - bwalters@example.edu', password: '12345') +User.create(uid: 'jbutler545', givenname: 'Jennifer', surname: 'Butler', fullName: 'Jennifer Butler', lfname: 'Butler, Jennifer', email: 'jbutler545@example.edu', description: 'Butler, Jennifer - jbutler545@example.edu', password: '12345') +User.create(uid: 'jdoe780', givenname: 'Jo', surname: 'Doe', fullName: 'Jo Doe', lfname: 'Doe, Jo', email: 'jdoe780@example.edu', description: 'Doe, Jo - jdoe780@example.edu', password: '12345') +User.create(uid: 'abrown', givenname: 'Ann', surname: 'Brown', fullName: 'Ann Brown', lfname: 'Brown, Ann', email: 'abrown@example.edu', description: 'Brown, Ann - abrown@example.edu', password: '12345') +User.create(uid: 'ggasper836', givenname: 'Greg', surname: 'Gasper', fullName: 'Greg Gasper', lfname: 'Gasper, Greg', email: 'ggasper836@example.edu', description: 'Gasper, Greg - ggasper836@example.edu', password: '12345') +User.create(uid: 'emartinez', givenname: 'Erik', surname: 'Martinez', fullName: 'Erik Martinez', lfname: 'Martinez, Erik', email: 'emartinez@example.edu', description: 'Martinez, Erik - emartinez@example.edu', password: '12345') +User.create(uid: 'jprice340', givenname: 'John', surname: 'Price', fullName: 'John Price', lfname: 'Price, John', email: 'jprice340@example.edu', description: 'Price, John - jprice340@example.edu', password: '12345') +User.create(uid: 'bgrady203', givenname: 'Bill', surname: 'Grady', fullName: 'Bill Grady', lfname: 'Grady, Bill', email: 'bgrady203@example.edu', description: 'Grady, Bill - bgrady203@example.edu', password: '12345') +User.create(uid: 'kwhite283', givenname: 'Kim', surname: 'White', fullName: 'Kim White', lfname: 'White, Kim', email: 'kwhite283@example.edu', description: 'White, Kim - kwhite283@example.edu', password: '12345') +User.create(uid: 'blee483', givenname: 'Betty', surname: 'Lee', fullName: 'Betty Lee', lfname: 'Lee, Betty', email: 'blee483@example.edu', description: 'Lee, Betty - blee483@example.edu', password: '12345') +User.create(uid: 'wdavis', givenname: 'William', surname: 'Davis', fullName: 'William Davis', lfname: 'Davis, William', email: 'wdavis@example.edu', description: 'Davis, William - wdavis@example.edu', password: '12345') +User.create(uid: 'egasper497', givenname: 'Erik', surname: 'Gasper', fullName: 'Erik Gasper', lfname: 'Gasper, Erik', email: 'egasper497@example.edu', description: 'Gasper, Erik - egasper497@example.edu', password: '12345') +User.create(uid: 'mwhite', givenname: 'Mark', surname: 'White', fullName: 'Mark White', lfname: 'White, Mark', email: 'mwhite@example.edu', description: 'White, Mark - mwhite@example.edu', password: '12345') +User.create(uid: 'dbrown', givenname: 'David', surname: 'Brown', fullName: 'David Brown', lfname: 'Brown, David', email: 'dbrown@example.edu', description: 'Brown, David - dbrown@example.edu', password: '12345') +User.create(uid: 'nlee', givenname: 'Nancy', surname: 'Lee', fullName: 'Nancy Lee', lfname: 'Lee, Nancy', email: 'nlee@example.edu', description: 'Lee, Nancy - nlee@example.edu', password: '12345') +User.create(uid: 'sdavis', givenname: 'Sarah', surname: 'Davis', fullName: 'Sarah Davis', lfname: 'Davis, Sarah', email: 'sdavis@example.edu', description: 'Davis, Sarah - sdavis@example.edu', password: '12345') +User.create(uid: 'cwalters', givenname: 'Colin', surname: 'Walters', fullName: 'Colin Walters', lfname: 'Walters, Colin', email: 'cwalters@example.edu', description: 'Walters, Colin - cwalters@example.edu', password: '12345') +User.create(uid: 'nwalters', givenname: 'Nancy', surname: 'Walters', fullName: 'Nancy Walters', lfname: 'Walters, Nancy', email: 'nwalters@example.edu', description: 'Walters, Nancy - nwalters@example.edu', password: '12345') +User.create(uid: 'kdoe490', givenname: 'Kim', surname: 'Doe', fullName: 'Kim Doe', lfname: 'Doe, Kim', email: 'kdoe490@example.edu', description: 'Doe, Kim - kdoe490@example.edu', password: '12345') +User.create(uid: 'wscott', givenname: 'William', surname: 'Scott', fullName: 'William Scott', lfname: 'Scott, William', email: 'wscott@example.edu', description: 'Scott, William - wscott@example.edu', password: '12345') +User.create(uid: 'nwilliams', givenname: 'Nancy', surname: 'Williams', fullName: 'Nancy Williams', lfname: 'Williams, Nancy', email: 'nwilliams@example.edu', description: 'Williams, Nancy - nwilliams@example.edu', password: '12345') +User.create(uid: 'dbrown739', givenname: 'David', surname: 'Brown', fullName: 'David Brown', lfname: 'Brown, David', email: 'dbrown739@example.edu', description: 'Brown, David - dbrown739@example.edu', password: '12345') +User.create(uid: 'wlopez', givenname: 'William', surname: 'Lopez', fullName: 'William Lopez', lfname: 'Lopez, William', email: 'wlopez@example.edu', description: 'Lopez, William - wlopez@example.edu', password: '12345') +User.create(uid: 'mhenderson959', givenname: 'Mark', surname: 'Henderson', fullName: 'Mark Henderson', lfname: 'Henderson, Mark', email: 'mhenderson959@example.edu', description: 'Henderson, Mark - mhenderson959@example.edu', password: '12345') +User.create(uid: 'khenderson874', givenname: 'Karoline', surname: 'Henderson', fullName: 'Karoline Henderson', lfname: 'Henderson, Karoline', email: 'khenderson874@example.edu', description: 'Henderson, Karoline - khenderson874@example.edu', password: '12345') +User.create(uid: 'rdavis', givenname: 'Robert', surname: 'Davis', fullName: 'Robert Davis', lfname: 'Davis, Robert', email: 'rdavis@example.edu', description: 'Davis, Robert - rdavis@example.edu', password: '12345') +User.create(uid: 'plopez', givenname: 'Paul', surname: 'Lopez', fullName: 'Paul Lopez', lfname: 'Lopez, Paul', email: 'plopez@example.edu', description: 'Lopez, Paul - plopez@example.edu', password: '12345') +User.create(uid: 'kjohnson', givenname: 'Kiersten', surname: 'Johnson', fullName: 'Kiersten Johnson', lfname: 'Johnson, Kiersten', email: 'kjohnson@example.edu', description: 'Johnson, Kiersten - kjohnson@example.edu', password: '12345') +User.create(uid: 'ksmith708', givenname: 'Karl', surname: 'Smith', fullName: 'Karl Smith', lfname: 'Smith, Karl', email: 'ksmith708@example.edu', description: 'Smith, Karl - ksmith708@example.edu', password: '12345') +User.create(uid: 'dlewis327', givenname: 'David', surname: 'Lewis', fullName: 'David Lewis', lfname: 'Lewis, David', email: 'dlewis327@example.edu', description: 'Lewis, David - dlewis327@example.edu', password: '12345') +User.create(uid: 'mdavis897', givenname: 'Michael', surname: 'Davis', fullName: 'Michael Davis', lfname: 'Davis, Michael', email: 'mdavis897@example.edu', description: 'Davis, Michael - mdavis897@example.edu', password: '12345') +User.create(uid: 'mmorrison', givenname: 'Mark', surname: 'Morrison', fullName: 'Mark Morrison', lfname: 'Morrison, Mark', email: 'mmorrison@example.edu', description: 'Morrison, Mark - mmorrison@example.edu', password: '12345') +User.create(uid: 'wwhite', givenname: 'William', surname: 'White', fullName: 'William White', lfname: 'White, William', email: 'wwhite@example.edu', description: 'White, William - wwhite@example.edu', password: '12345') +User.create(uid: 'klopez520', givenname: 'Karoline', surname: 'Lopez', fullName: 'Karoline Lopez', lfname: 'Lopez, Karoline', email: 'klopez520@example.edu', description: 'Lopez, Karoline - klopez520@example.edu', password: '12345') +User.create(uid: 'jlangenberg373', givenname: 'James', surname: 'Langenberg', fullName: 'James Langenberg', lfname: 'Langenberg, James', email: 'jlangenberg373@example.edu', description: 'Langenberg, James - jlangenberg373@example.edu', password: '12345') +User.create(uid: 'dpeterson613', givenname: 'David', surname: 'Peterson', fullName: 'David Peterson', lfname: 'Peterson, David', email: 'dpeterson613@example.edu', description: 'Peterson, David - dpeterson613@example.edu', password: '12345') +User.create(uid: 'mdoe270', givenname: 'Michael', surname: 'Doe', fullName: 'Michael Doe', lfname: 'Doe, Michael', email: 'mdoe270@example.edu', description: 'Doe, Michael - mdoe270@example.edu', password: '12345') +User.create(uid: 'wwilliams808', givenname: 'William', surname: 'Williams', fullName: 'William Williams', lfname: 'Williams, William', email: 'wwilliams808@example.edu', description: 'Williams, William - wwilliams808@example.edu', password: '12345') +User.create(uid: 'mvales501', givenname: 'Marie', surname: 'Vales', fullName: 'Marie Vales', lfname: 'Vales, Marie', email: 'mvales501@example.edu', description: 'Vales, Marie - mvales501@example.edu', password: '12345') +User.create(uid: 'ppeterson', givenname: 'Paul', surname: 'Peterson', fullName: 'Paul Peterson', lfname: 'Peterson, Paul', email: 'ppeterson@example.edu', description: 'Peterson, Paul - ppeterson@example.edu', password: '12345') +User.create(uid: 'ldavis', givenname: 'Lori', surname: 'Davis', fullName: 'Lori Davis', lfname: 'Davis, Lori', email: 'ldavis@example.edu', description: 'Davis, Lori - ldavis@example.edu', password: '12345') +User.create(uid: 'bgasper28', givenname: 'Bill', surname: 'Gasper', fullName: 'Bill Gasper', lfname: 'Gasper, Bill', email: 'bgasper28@example.edu', description: 'Gasper, Bill - bgasper28@example.edu', password: '12345') +User.create(uid: 'bprice745', givenname: 'Betty', surname: 'Price', fullName: 'Betty Price', lfname: 'Price, Betty', email: 'bprice745@example.edu', description: 'Price, Betty - bprice745@example.edu', password: '12345') +User.create(uid: 'ddoe', givenname: 'Donna', surname: 'Doe', fullName: 'Donna Doe', lfname: 'Doe, Donna', email: 'ddoe@example.edu', description: 'Doe, Donna - ddoe@example.edu', password: '12345') +User.create(uid: 'lvales817', givenname: 'Lisa', surname: 'Vales', fullName: 'Lisa Vales', lfname: 'Vales, Lisa', email: 'lvales817@example.edu', description: 'Vales, Lisa - lvales817@example.edu', password: '12345') +User.create(uid: 'wthompson675', givenname: 'William', surname: 'Thompson', fullName: 'William Thompson', lfname: 'Thompson, William', email: 'wthompson675@example.edu', description: 'Thompson, William - wthompson675@example.edu', password: '12345') +User.create(uid: 'landerson906', givenname: 'Lori', surname: 'Anderson', fullName: 'Lori Anderson', lfname: 'Anderson, Lori', email: 'landerson906@example.edu', description: 'Anderson, Lori - landerson906@example.edu', password: '12345')