Description:
prevents user from viewing own sources submitted to unavailable problems
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r305:a5e98b239050 - - 1 file changed: 3 inserted, 1 deleted

@@ -44,97 +44,99
44 44 # end
45 45
46 46 @announcements = Announcement.find_for_frontpage
47 47 render :action => 'login', :layout => 'empty'
48 48 end
49 49
50 50 def list
51 51 prepare_list_information
52 52 end
53 53
54 54 def help
55 55 @user = User.find(session[:user_id])
56 56 end
57 57
58 58 def submit
59 59 user = User.find(session[:user_id])
60 60
61 61 @submission = Submission.new(params[:submission])
62 62 @submission.user = user
63 63 @submission.language_id = 0
64 64 if (params['file']) and (params['file']!='')
65 65 @submission.source = params['file'].read
66 66 @submission.source_filename = params['file'].original_filename
67 67 end
68 68 @submission.submitted_at = Time.new.gmtime
69 69
70 70 if Configuration.time_limit_mode? and user.contest_finished?
71 71 @submission.errors.add_to_base "The contest is over."
72 72 prepare_list_information
73 73 render :action => 'list' and return
74 74 end
75 75
76 76 if @submission.valid?
77 77 if @submission.save == false
78 78 flash[:notice] = 'Error saving your submission'
79 79 elsif Task.create(:submission_id => @submission.id,
80 80 :status => Task::STATUS_INQUEUE) == false
81 81 flash[:notice] = 'Error adding your submission to task queue'
82 82 end
83 83 else
84 84 prepare_list_information
85 85 render :action => 'list' and return
86 86 end
87 87 redirect_to :action => 'list'
88 88 end
89 89
90 90 def source
91 91 submission = Submission.find(params[:id])
92 - if submission.user_id == session[:user_id]
92 + if ((submission.user_id == session[:user_id]) and
93 + (submission.problem != nil) and
94 + (submission.problem.available))
93 95 send_data(submission.source,
94 96 {:filename => submission.download_filename,
95 97 :type => 'text/plain'})
96 98 else
97 99 flash[:notice] = 'Error viewing source'
98 100 redirect_to :action => 'list'
99 101 end
100 102 end
101 103
102 104 def compiler_msg
103 105 @submission = Submission.find(params[:id])
104 106 if @submission.user_id == session[:user_id]
105 107 render :action => 'compiler_msg', :layout => 'empty'
106 108 else
107 109 flash[:notice] = 'Error viewing source'
108 110 redirect_to :action => 'list'
109 111 end
110 112 end
111 113
112 114 def submission
113 115 @user = User.find(session[:user_id])
114 116 @problems = @user.available_problems
115 117 if params[:id]==nil
116 118 @problem = nil
117 119 @submissions = nil
118 120 else
119 121 @problem = Problem.find_by_name(params[:id])
120 122 if not @problem.available
121 123 redirect_to :action => 'list'
122 124 flash[:notice] = 'Error: submissions for that problem are not viewable.'
123 125 return
124 126 end
125 127 @submissions = Submission.find_all_by_user_problem(@user.id, @problem.id)
126 128 end
127 129 end
128 130
129 131 def result
130 132 if !Configuration.show_grading_result
131 133 redirect_to :action => 'list' and return
132 134 end
133 135 @user = User.find(session[:user_id])
134 136 @submission = Submission.find(params[:id])
135 137 if @submission.user!=@user
136 138 flash[:notice] = 'You are not allowed to view result of other users.'
137 139 redirect_to :action => 'list' and return
138 140 end
139 141 prepare_grading_result(@submission)
140 142 end
You need to be logged in to leave comments. Login now