summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules3
-rw-r--r--help/app/models/ticket.rb16
-rw-r--r--help/app/models/ticket_comment.rb11
-rw-r--r--help/test/unit/ticket_comment_test.rb19
-rw-r--r--help/test/unit/ticket_test.rb8
-rw-r--r--users/app/controllers/sessions_controller.rb6
-rw-r--r--users/app/models/user.rb7
7 files changed, 55 insertions, 15 deletions
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..afce01f
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "users/app/assets/javascripts/srp"]
+ path = users/app/assets/javascripts/srp
+ url = git://leap.se/srp_js
diff --git a/help/app/models/ticket.rb b/help/app/models/ticket.rb
index 8a282b5..784d7ef 100644
--- a/help/app/models/ticket.rb
+++ b/help/app/models/ticket.rb
@@ -24,11 +24,12 @@ class Ticket < CouchRest::Model::Base
#property :user_verified, TrueClass, :default => false #will be true exactly when user is set
#admins
property :code, String, :protected => true # only should be set if created_by is nil
+ property :is_open, TrueClass, :default => true
property :comments, [TicketComment]
timestamps!
- before_validation :set_code, :on => :create
+ before_validation :set_created_by, :set_code, :on => :create
design do
view :by_title
@@ -37,7 +38,9 @@ class Ticket < CouchRest::Model::Base
validates :email, :format => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/, :if => :email #email address is optional
- #set created_by to be current_user
+ def set_created_by
+ self.created_by = User.current if User.current
+ end
def is_creator_validated?
!!created_by
@@ -48,6 +51,15 @@ class Ticket < CouchRest::Model::Base
self.code = SecureRandom.hex(8) if !is_creator_validated?
end
+ def close
+ self.is_open = false
+ save
+ end
+
+ def reopen
+ self.is_open = true
+ save
+ end
=begin
def validate
diff --git a/help/app/models/ticket_comment.rb b/help/app/models/ticket_comment.rb
index 1e23136..652133a 100644
--- a/help/app/models/ticket_comment.rb
+++ b/help/app/models/ticket_comment.rb
@@ -1,8 +1,6 @@
-class TicketComment < CouchRest::Model::Base #?? do we want this to be a base model?
+class TicketComment
include CouchRest::Model::Embeddable
- #use_database "ticket_comments"
-
#belongs_to :ticket #is this best way to do it? will want to access all of a tickets comments, so maybe this isn't the way?
property :posted_by, Integer, :protected => true# maybe this should be current_user if that is set, meaning the user is logged in #String # user??
# if the current user is not set, then we could just say the comment comes from an 'unauthenticated user', which would be somebody with the secret URL
@@ -10,7 +8,7 @@ class TicketComment < CouchRest::Model::Base #?? do we want this to be a base mo
#property :posted_verified, TrueClass, :protected => true #should be true if current_user is set when the comment is created
property :body, String
- before_validation :set_time, :set_posted_by, :on => :create # hmm, this requires object to be validated for these methods to be called, but if this is only embeddedable (which might be best), then not clear how to do this without manually validating.
+ before_validation :set_time#, :set_posted_by
#design do
# view :by_posted_at
@@ -25,9 +23,10 @@ class TicketComment < CouchRest::Model::Base #?? do we want this to be a base mo
self.posted_at = Time.now
end
+=begin
def set_posted_by
- #should be something like this, but current_user is not set yet
- #self.posted_by = current_user if current_user
+ self.posted_by = User.current if User.current
end
+=end
end
diff --git a/help/test/unit/ticket_comment_test.rb b/help/test/unit/ticket_comment_test.rb
index 37e6e67..883720f 100644
--- a/help/test/unit/ticket_comment_test.rb
+++ b/help/test/unit/ticket_comment_test.rb
@@ -25,21 +25,32 @@ class TicketCommentTest < ActiveSupport::TestCase
#tc.ticket = Ticket.find_by_title("test title")
#tc.ticket.title
end
+
+=begin
+ test "create authenticated comment" do
+ User.current = 4
+ comment2 = TicketComment.new :body => "help my email is broken!"
+ comment2.valid? #save # should not save comment
+ assert_not_nil comment2.posted_by
+ end
+=end
test "add comments" do
testticket = Ticket.create :title => "testing"
assert_equal testticket.comments.count, 0
comment = TicketComment.new :body => "my email broke"
- assert comment.valid? #validating or saving necessary for setting posted_at
- assert_not_nil comment.posted_at
+ #assert comment.valid? #validating or saving necessary for setting posted_at
+ #assert_not_nil comment.posted_at
testticket.comments << comment
assert_equal testticket.comments.count, 1
sleep(1) # so first comment has earlier posted_at time
comment2 = TicketComment.new :body => "my email broke"
- comment2.save #possible to save only if ticketcomment is a model now
- testticket.comments << comment2
+ testticket.comments << comment2 #this should validate comment2
+ testticket.valid?
assert_equal testticket.comments.count, 2
+ assert_not_nil comment.posted_at
+ assert_not_nil testticket.comments.last.posted_at
assert testticket.comments.first.posted_at < testticket.comments.last.posted_at
end
diff --git a/help/test/unit/ticket_test.rb b/help/test/unit/ticket_test.rb
index fddd719..c3a4759 100644
--- a/help/test/unit/ticket_test.rb
+++ b/help/test/unit/ticket_test.rb
@@ -14,6 +14,11 @@ class TicketTest < ActiveSupport::TestCase
assert t.valid?
assert_equal t.title, 'test title'
+ assert t.is_open
+ t.close
+ assert !t.is_open
+ t.reopen
+ assert t.is_open
#user = LeapWebHelp::User.new(User.valid_attributes_hash)
#user = LeapWebUsers::User.create
@@ -41,7 +46,8 @@ class TicketTest < ActiveSupport::TestCase
assert_not_nil t1.code
assert_nil t1.created_by
- t2 = Ticket.create :title => 'test title', :created_by => 4
+ User.current = 4
+ t2 = Ticket.create :title => 'test title'
assert_nil t2.code
assert_not_nil t2.created_by
diff --git a/users/app/controllers/sessions_controller.rb b/users/app/controllers/sessions_controller.rb
index f79b069..7852e5c 100644
--- a/users/app/controllers/sessions_controller.rb
+++ b/users/app/controllers/sessions_controller.rb
@@ -8,8 +8,8 @@ class SessionsController < ApplicationController
def create
@user = User.find_by_param(params[:login])
session[:handshake] = @user.initialize_auth(params['A'].hex)
- render :json => { :B => session[:handshake].bb.to_s(16),
- :salt => @user.password_salt }
+ User.current = @user #?
+ render :json => { :B => session[:handshake].bb.to_s(16), :salt => @user.password_salt }
rescue RECORD_NOT_FOUND
render :json => {:errors => {:login => ["unknown user"]}}
end
@@ -18,6 +18,7 @@ class SessionsController < ApplicationController
@user = User.find_by_param(params[:id])
@server_auth = @user.authenticate!(params[:client_auth].hex, session.delete(:handshake))
session[:user_id] = @user.id
+ User.current = @user #?
render :json => {:M2 => @server_auth}
rescue WRONG_PASSWORD
session[:handshake] = nil
@@ -26,6 +27,7 @@ class SessionsController < ApplicationController
def destroy
session[:user_id] = nil
+ User.current = nil #?
redirect_to root_path
end
end
diff --git a/users/app/models/user.rb b/users/app/models/user.rb
index fa64f42..95ee810 100644
--- a/users/app/models/user.rb
+++ b/users/app/models/user.rb
@@ -46,4 +46,11 @@ class User < CouchRest::Model::Base
password_verifier.hex
end
+ def self.current
+ Thread.current[:user]
+ end
+ def self.current=(user)
+ Thread.current[:user] = user
+ end
+
end