Browse Source

Make user setup work fully, thanks to EAAL.

old-ruby
Ben Kurtovic 9 years ago
parent
commit
fcfc56aab5
5 changed files with 81 additions and 27 deletions
  1. +1
    -0
      Gemfile
  2. +10
    -0
      Gemfile.lock
  3. +22
    -2
      app/models/user.rb
  4. +3
    -0
      config/initializers/eaal.rb
  5. +45
    -25
      lib/tasks/calefaction.rake

+ 1
- 0
Gemfile View File

@@ -5,6 +5,7 @@ gem 'sqlite3'
gem 'uglifier', '>= 1.3.0' gem 'uglifier', '>= 1.3.0'
gem 'jquery-rails' gem 'jquery-rails'
gem 'bcrypt', '~> 3.1.7' gem 'bcrypt', '~> 3.1.7'
gem 'eaal', '~> 0.1.12'


# At this point, avoid using SASS or CoffeeScript # At this point, avoid using SASS or CoffeeScript
# gem 'sass-rails', '~> 5.0' # gem 'sass-rails', '~> 5.0'


+ 10
- 0
Gemfile.lock View File

@@ -48,11 +48,18 @@ GEM
columnize (0.9.0) columnize (0.9.0)
debug_inspector (0.0.2) debug_inspector (0.0.2)
debugger-linecache (1.2.0) debugger-linecache (1.2.0)
eaal (0.1.12)
faraday (>= 0.8.4)
hpricot (>= 0.6)
memcache-client (>= 1.7.1)
erubis (2.7.0) erubis (2.7.0)
execjs (2.4.0) execjs (2.4.0)
faraday (0.9.1)
multipart-post (>= 1.2, < 3)
globalid (0.3.3) globalid (0.3.3)
activesupport (>= 4.1.0) activesupport (>= 4.1.0)
hike (1.2.3) hike (1.2.3)
hpricot (0.8.6)
i18n (0.7.0) i18n (0.7.0)
jquery-rails (4.0.3) jquery-rails (4.0.3)
rails-dom-testing (~> 1.0) rails-dom-testing (~> 1.0)
@@ -63,10 +70,12 @@ GEM
nokogiri (>= 1.5.9) nokogiri (>= 1.5.9)
mail (2.6.3) mail (2.6.3)
mime-types (>= 1.16, < 3) mime-types (>= 1.16, < 3)
memcache-client (1.8.5)
mime-types (2.4.3) mime-types (2.4.3)
mini_portile (0.6.2) mini_portile (0.6.2)
minitest (5.5.1) minitest (5.5.1)
multi_json (1.11.0) multi_json (1.11.0)
multipart-post (2.0.0)
nokogiri (1.6.6.2) nokogiri (1.6.6.2)
mini_portile (~> 0.6.0) mini_portile (~> 0.6.0)
rack (1.6.0) rack (1.6.0)
@@ -128,6 +137,7 @@ PLATFORMS
DEPENDENCIES DEPENDENCIES
bcrypt (~> 3.1.7) bcrypt (~> 3.1.7)
byebug byebug
eaal (~> 0.1.12)
jquery-rails jquery-rails
rails (= 4.2.0) rails (= 4.2.0)
sqlite3 sqlite3


+ 22
- 2
app/models/user.rb View File

@@ -1,9 +1,29 @@
# require 'calefaction/api/eveonline'
require 'eaal'


class User < ActiveRecord::Base class User < ActiveRecord::Base
has_secure_password has_secure_password


def char_names
ensure_api_user
begin
@api.Characters.characters.map { |char| char.name }
rescue EAAL::EAALError
[]
end
end

def member_of?(corp_id) def member_of?(corp_id)
false
ensure_api_user
@api.scope = 'char'
begin
@api.CharacterSheet(names: name).corporationID.to_i == corp_id
rescue EAAL::EAALError
false
end
end

private
def ensure_api_user
@api ||= EAAL::API.new(api_key, api_verify)
end end
end end

+ 3
- 0
config/initializers/eaal.rb View File

@@ -0,0 +1,3 @@
require 'eaal'

EAAL.cache = EAAL::Cache::FileCache.new("#{Rails.root}/tmp/eaal")

+ 45
- 25
lib/tasks/calefaction.rake View File

@@ -8,48 +8,68 @@ namespace :calefaction do


print "\nEnter your corporation's ID (this is visible in the URL for "\ print "\nEnter your corporation's ID (this is visible in the URL for "\
"your corp's page on \nzKillboard, among other places): " "your corp's page on \nzKillboard, among other places): "
corp_id = STDIN.gets.chomp.to_i
corp_id = STDIN.gets.to_i
if corp_id <= 0 if corp_id <= 0
puts 'Corporation ID must be a positive integer. Stopping.' puts 'Corporation ID must be a positive integer. Stopping.'
next next
end end


print "\nEnter your character's name: "
user_name = STDIN.gets.chomp
print "\nEnter your character's API key ID (create one at\n"\
"https://community.eveonline.com/support/api-key/createpredefined?accessMask=8): "
user_api_key = STDIN.gets.chomp

print "\nEnter the verification code for the key you just entered: "
user_api_verify = STDIN.gets.chomp

user = User.new(api_key: user_api_key, api_verify: user_api_verify,
is_admin: true, is_corp: true)
chars = user.char_names
if chars.empty?
puts "The given API key is invalid, has no characters, or something "\
"else is wrong\nwith the EVE API right now..."
next
end

if chars.length == 1
user.name = chars.first
else
puts "\nChoose a character:"
chars.each_with_index do |name, i|
puts " [#{i}]: #{name}"
end
puts "Enter the number next to your chosen character: "
loop do
index = STDIN.gets.to_i
break unless index >= chars.length || index < 0
puts "Bad input; try again: "
end
user.name = chars[index]
end

unless user.member_of? corp_id
puts 'You are not a member of the given corporation. Stopping.'
next
end


print "\nEnter your email address (used for password resets; may be blank): " print "\nEnter your email address (used for password resets; may be blank): "
user_email = STDIN.gets.chomp
user_email = nil if user_email.empty?
user.email = STDIN.gets.chomp
user.email = nil if user.email.empty?


print "\nEnter your new password (to log in to the website, **NOT** for EVE!): " print "\nEnter your new password (to log in to the website, **NOT** for EVE!): "
user_pass = STDIN.noecho(&:gets).chomp
user.password = STDIN.noecho(&:gets).chomp
puts puts


print "\nConfirm the password: " print "\nConfirm the password: "
if user_pass != STDIN.noecho(&:gets).chomp
if user.password != STDIN.noecho(&:gets).chomp
puts "\nPasswords do not match. Stopping." puts "\nPasswords do not match. Stopping."
next next
end end
puts puts


print "\nEnter your character's API key ID (create one at\n"\
"https://community.eveonline.com/support/api-key/createpredefined?accessMask=8): "
user_api_key = STDIN.gets.chomp

print "\nEnter the verification code for the key you just entered: "
user_api_verify = STDIN.gets.chomp
AdminSetting.where(key: %w(corp_name site_name)).update_all(value: corp_name)
AdminSetting.find_by(key: 'corp_id').update(value: corp_id)
user.save


User.transaction do
AdminSetting.where(key: %w(corp_name site_name)).update_all(value: corp_name)
AdminSetting.find_by(key: 'corp_id').update(value: corp_id)
user = User.new(name: user_name, email: user_email, password: user_pass,
api_key: user_api_key, api_verify: user_api_verify,
is_admin: true, is_corp: true)
unless user.member_of? corp_id
puts 'You are not a member of the given corporation. Stopping.'
raise ActiveRecord::Rollback
end
user.save
end
puts "\nDone!"
end end
end end

Loading…
Cancel
Save