mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
Fix all the trailing whitespace
This commit is contained in:
@@ -12,5 +12,5 @@ class Admin::AdminController < ApplicationController
|
||||
def ensure_is_admin
|
||||
raise Discourse::InvalidAccess.new unless current_user.admin?
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
@@ -8,8 +8,8 @@ class Admin::EmailLogsController < Admin::AdminController
|
||||
|
||||
def test
|
||||
requires_parameter(:email_address)
|
||||
Jobs.enqueue(:test_email, to_address: params[:email_address])
|
||||
Jobs.enqueue(:test_email, to_address: params[:email_address])
|
||||
render nothing: true
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -7,4 +7,4 @@ class Admin::ExportController < Admin::AdminController
|
||||
render json: failed_json.merge( message: "An #{Export.is_export_running? ? 'export' : 'import'} is currently running. Can't start a new export job right now.")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
require_dependency 'sql_builder'
|
||||
|
||||
class Admin::FlagsController < Admin::AdminController
|
||||
def index
|
||||
def index
|
||||
|
||||
sql = SqlBuilder.new "select p.id, t.title, p.cooked, p.user_id, p.topic_id, p.post_number, p.hidden, t.visible topic_visible
|
||||
from posts p
|
||||
from posts p
|
||||
join topics t on t.id = topic_id
|
||||
join (
|
||||
select
|
||||
post_id,
|
||||
count(*) as cnt,
|
||||
max(created_at) max,
|
||||
min(created_at) min
|
||||
select
|
||||
post_id,
|
||||
count(*) as cnt,
|
||||
max(created_at) max,
|
||||
min(created_at) min
|
||||
from post_actions
|
||||
/*where2*/
|
||||
group by post_id
|
||||
) as a on a.post_id = p.id
|
||||
/*where*/
|
||||
/*order_by*/
|
||||
/*order_by*/
|
||||
limit 100
|
||||
"
|
||||
|
||||
sql.where2 "post_action_type_id in (:flag_types)", flag_types: PostActionType.FlagTypes
|
||||
|
||||
|
||||
# it may make sense to add a view that shows flags on deleted posts,
|
||||
# it may make sense to add a view that shows flags on deleted posts,
|
||||
# we don't clear the flags on post deletion, just supress counts
|
||||
# they may have deleted_at on the action not set
|
||||
if params[:filter] == 'old'
|
||||
@@ -41,16 +41,16 @@ limit 100
|
||||
end
|
||||
|
||||
posts = sql.exec.to_a
|
||||
|
||||
|
||||
if posts.length == 0
|
||||
render :json => {users: [], posts: []}
|
||||
return
|
||||
return
|
||||
end
|
||||
|
||||
map = {}
|
||||
map = {}
|
||||
users = Set.new
|
||||
|
||||
posts.each{ |p|
|
||||
posts.each{ |p|
|
||||
users << p["user_id"]
|
||||
p["excerpt"] = Post.excerpt(p["cooked"])
|
||||
p.delete "cooked"
|
||||
@@ -58,10 +58,10 @@ limit 100
|
||||
map[p["id"]] = p
|
||||
}
|
||||
|
||||
sql = SqlBuilder.new "select a.id, a.user_id, post_action_type_id, a.created_at, post_id, a.message
|
||||
sql = SqlBuilder.new "select a.id, a.user_id, post_action_type_id, a.created_at, post_id, a.message
|
||||
from post_actions a
|
||||
/*where*/
|
||||
"
|
||||
/*where*/
|
||||
"
|
||||
sql.where("post_action_type_id in (:flag_types)", flag_types: PostActionType.FlagTypes)
|
||||
sql.where("post_id in (:posts)", posts: posts.map{|p| p["id"].to_i})
|
||||
|
||||
@@ -72,33 +72,33 @@ from post_actions a
|
||||
end
|
||||
|
||||
sql.exec.each do |action|
|
||||
p = map[action["post_id"]]
|
||||
p = map[action["post_id"]]
|
||||
p[:post_actions] ||= []
|
||||
p[:post_actions] << action
|
||||
|
||||
users << action["user_id"]
|
||||
end
|
||||
|
||||
sql =
|
||||
sql =
|
||||
"select id, username, name, email from users
|
||||
where id in (?)"
|
||||
|
||||
|
||||
users = User.exec_sql(sql, users.to_a).to_a
|
||||
|
||||
users.each { |u|
|
||||
users.each { |u|
|
||||
u["avatar_template"] = User.avatar_template(u["email"])
|
||||
u.delete("email")
|
||||
}
|
||||
|
||||
render json: MultiJson.dump({users: users, posts: posts})
|
||||
render json: MultiJson.dump({users: users, posts: posts})
|
||||
end
|
||||
|
||||
def clear
|
||||
p = Post.find(params[:id])
|
||||
PostAction.clear_flags!(p, current_user.id)
|
||||
p.hidden = false
|
||||
p.hidden = false
|
||||
p.hidden_reason_id = nil
|
||||
p.save
|
||||
render nothing: true
|
||||
render nothing: true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,8 +3,8 @@ class Admin::ImpersonateController < Admin::AdminController
|
||||
def create
|
||||
requires_parameters(:username_or_email)
|
||||
|
||||
user = User.where(['username_lower = lower(?) or lower(email) = lower(?) or lower(name) = lower(?)',
|
||||
params[:username_or_email],
|
||||
user = User.where(['username_lower = lower(?) or lower(email) = lower(?) or lower(name) = lower(?)',
|
||||
params[:username_or_email],
|
||||
params[:username_or_email],
|
||||
params[:username_or_email]]).first
|
||||
raise Discourse::NotFound if user.blank?
|
||||
@@ -15,6 +15,6 @@ class Admin::ImpersonateController < Admin::AdminController
|
||||
log_on_user(user)
|
||||
|
||||
render nothing: true
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Admin::SiteCustomizationsController < Admin::AdminController
|
||||
|
||||
|
||||
def index
|
||||
@site_customizations = SiteCustomization.all
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
class Admin::SiteSettingsController < Admin::AdminController
|
||||
|
||||
def index
|
||||
@site_settings = SiteSetting.all_settings
|
||||
@site_settings = SiteSetting.all_settings
|
||||
render_json_dump(@site_settings.as_json)
|
||||
end
|
||||
|
||||
def update
|
||||
def update
|
||||
requires_parameter(:value)
|
||||
SiteSetting.send("#{params[:id]}=", params[:value])
|
||||
render nothing: true
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -3,10 +3,10 @@ class Admin::UsersController < Admin::AdminController
|
||||
def index
|
||||
# Sort order
|
||||
if params[:query] == "active"
|
||||
@users = User.order("COALESCE(last_seen_at, '01-01-1970') DESC, username")
|
||||
@users = User.order("COALESCE(last_seen_at, '01-01-1970') DESC, username")
|
||||
else
|
||||
@users = User.order("created_at DESC, username")
|
||||
end
|
||||
end
|
||||
|
||||
@users = @users.where('approved = false') if params[:query] == 'pending'
|
||||
@users = @users.where('username_lower like :filter or email like :filter', filter: "%#{params[:filter]}%") if params[:filter].present?
|
||||
@@ -60,7 +60,7 @@ class Admin::UsersController < Admin::AdminController
|
||||
@user = User.where(id: params[:user_id]).first
|
||||
guardian.ensure_can_grant_admin!(@user)
|
||||
@user.update_column(:admin, true)
|
||||
render_serialized(@user, AdminUserSerializer)
|
||||
render_serialized(@user, AdminUserSerializer)
|
||||
end
|
||||
|
||||
def approve
|
||||
|
||||
@@ -12,4 +12,4 @@ class Admin::VersionsController < Admin::AdminController
|
||||
rescue RestClient::Forbidden
|
||||
render json: {errors: [I18n.t("mothership.access_token_problem")]}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -18,19 +18,19 @@ class ApplicationController < ActionController::Base
|
||||
before_filter :store_incoming_links
|
||||
before_filter :preload_json
|
||||
before_filter :check_xhr
|
||||
|
||||
|
||||
rescue_from Exception do |exception|
|
||||
unless [ ActiveRecord::RecordNotFound, ActionController::RoutingError,
|
||||
unless [ ActiveRecord::RecordNotFound, ActionController::RoutingError,
|
||||
ActionController::UnknownController, AbstractController::ActionNotFound].include? exception.class
|
||||
begin
|
||||
begin
|
||||
ErrorLog.report_async!(exception, self, request, current_user)
|
||||
rescue
|
||||
rescue
|
||||
# dont care give up
|
||||
end
|
||||
end
|
||||
raise
|
||||
end
|
||||
|
||||
|
||||
|
||||
# Some exceptions
|
||||
class RenderEmpty < Exception; end
|
||||
@@ -48,9 +48,9 @@ class ApplicationController < ActionController::Base
|
||||
if e.available_in < 1.minute.to_i
|
||||
time_left = I18n.t("rate_limiter.seconds", count: e.available_in)
|
||||
elsif e.available_in < 1.hour.to_i
|
||||
time_left = I18n.t("rate_limiter.minutes", count: (e.available_in / 1.minute.to_i))
|
||||
time_left = I18n.t("rate_limiter.minutes", count: (e.available_in / 1.minute.to_i))
|
||||
else
|
||||
time_left = I18n.t("rate_limiter.hours", count: (e.available_in / 1.hour.to_i))
|
||||
time_left = I18n.t("rate_limiter.hours", count: (e.available_in / 1.hour.to_i))
|
||||
end
|
||||
|
||||
render json: {errors: [I18n.t("rate_limiter.too_many_requests", time_left: time_left)]}, status: 429
|
||||
@@ -98,7 +98,7 @@ class ApplicationController < ActionController::Base
|
||||
|
||||
def inject_preview_style
|
||||
style = request['preview-style']
|
||||
session[:preview_style] = style if style
|
||||
session[:preview_style] = style if style
|
||||
end
|
||||
|
||||
def guardian
|
||||
@@ -106,7 +106,7 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def log_on_user(user)
|
||||
session[:current_user_id] = user.id
|
||||
session[:current_user_id] = user.id
|
||||
unless user.auth_token
|
||||
user.auth_token = SecureRandom.hex(16)
|
||||
user.save!
|
||||
@@ -116,7 +116,7 @@ class ApplicationController < ActionController::Base
|
||||
|
||||
# This is odd, but it seems that in Rails `render json: obj` is about
|
||||
# 20% slower than calling MultiJSON.dump ourselves. I'm not sure why
|
||||
# Rails doesn't call MultiJson.dump when you pass it json: obj but
|
||||
# Rails doesn't call MultiJson.dump when you pass it json: obj but
|
||||
# it seems we don't need whatever Rails is doing.
|
||||
def render_serialized(obj, serializer, opts={})
|
||||
|
||||
@@ -125,7 +125,7 @@ class ApplicationController < ActionController::Base
|
||||
if obj.is_a?(Array)
|
||||
serializer_opts[:each_serializer] = serializer
|
||||
render_json_dump(ActiveModel::ArraySerializer.new(obj, serializer_opts).as_json)
|
||||
else
|
||||
else
|
||||
render_json_dump(serializer.new(obj, serializer_opts).as_json)
|
||||
end
|
||||
|
||||
@@ -143,7 +143,7 @@ class ApplicationController < ActionController::Base
|
||||
return false if current_user.present?
|
||||
|
||||
# Don't cache if there's restricted access
|
||||
return false if SiteSetting.restrict_access?
|
||||
return false if SiteSetting.restrict_access?
|
||||
|
||||
true
|
||||
end
|
||||
@@ -199,7 +199,7 @@ class ApplicationController < ActionController::Base
|
||||
else
|
||||
render_json_error(obj)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def block_if_maintenance_mode
|
||||
if Discourse.maintenance_mode?
|
||||
@@ -212,11 +212,11 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def check_restricted_access
|
||||
# note current_user is defined in the CurrentUser mixin
|
||||
# note current_user is defined in the CurrentUser mixin
|
||||
if SiteSetting.restrict_access? && cookies[:_access] != SiteSetting.access_password
|
||||
redirect_to request_access_path(:return_path => request.fullpath)
|
||||
return false
|
||||
end
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
def mini_profiler_enabled?
|
||||
@@ -229,7 +229,7 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def requires_parameters(*required)
|
||||
required.each do |p|
|
||||
required.each do |p|
|
||||
raise Discourse::InvalidParameters.new(p) unless params.has_key?(p)
|
||||
end
|
||||
end
|
||||
@@ -239,13 +239,13 @@ class ApplicationController < ActionController::Base
|
||||
def store_incoming_links
|
||||
if request.referer.present?
|
||||
parsed = URI.parse(request.referer)
|
||||
if parsed.host != request.host
|
||||
if parsed.host != request.host
|
||||
IncomingLink.create(url: request.url, referer: request.referer[0..999])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def check_xhr
|
||||
def check_xhr
|
||||
unless (controller_name == 'forums' || controller_name == 'user_open_ids')
|
||||
# render 'default/empty' unless ((request.format && request.format.json?) or request.xhr?)
|
||||
raise RenderEmpty.new unless ((request.format && request.format.json?) or request.xhr?)
|
||||
@@ -255,5 +255,5 @@ class ApplicationController < ActionController::Base
|
||||
def ensure_logged_in
|
||||
raise Discourse::NotLoggedIn.new unless current_user.present?
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
@@ -8,7 +8,7 @@ class CategoriesController < ApplicationController
|
||||
list = CategoryList.new(current_user)
|
||||
render_serialized(list, CategoryListSerializer)
|
||||
end
|
||||
|
||||
|
||||
def show
|
||||
@category = Category.where(slug: params[:id]).first
|
||||
render_serialized(@category, CategorySerializer)
|
||||
@@ -20,7 +20,7 @@ class CategoriesController < ApplicationController
|
||||
|
||||
@category = Category.create(category_params.merge(user: current_user))
|
||||
return render_json_error(@category) unless @category.save
|
||||
|
||||
|
||||
render_serialized(@category, CategorySerializer)
|
||||
end
|
||||
|
||||
@@ -30,7 +30,7 @@ class CategoriesController < ApplicationController
|
||||
@category = Category.where(id: params[:id]).first
|
||||
guardian.ensure_can_edit!(@category)
|
||||
|
||||
json_result(@category, :serializer => CategorySerializer) {|cat| cat.update_attributes(category_params) }
|
||||
json_result(@category, :serializer => CategorySerializer) {|cat| cat.update_attributes(category_params) }
|
||||
end
|
||||
|
||||
def destroy
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
class ClicksController < ApplicationController
|
||||
|
||||
skip_before_filter :check_xhr
|
||||
|
||||
|
||||
def track
|
||||
requires_parameter(:url)
|
||||
requires_parameter(:url)
|
||||
if params[:topic_id].present? or params[:post_id].present?
|
||||
args = {url: params[:url], ip: request.remote_ip}
|
||||
args[:user_id] = current_user.id if current_user.present?
|
||||
@@ -22,4 +22,4 @@ class ClicksController < ApplicationController
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -8,7 +8,7 @@ class DraftController < ApplicationController
|
||||
end
|
||||
|
||||
def update
|
||||
Draft.set(current_user, params[:draft_key], params[:sequence].to_i, params[:data])
|
||||
Draft.set(current_user, params[:draft_key], params[:sequence].to_i, params[:data])
|
||||
render :text => 'ok'
|
||||
end
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ class EmailController < ApplicationController
|
||||
end
|
||||
|
||||
def unsubscribe
|
||||
@user = User.find_by_temporary_key(params[:key])
|
||||
@user = User.find_by_temporary_key(params[:key])
|
||||
|
||||
# Don't allow the use of a key while logged in as a different user
|
||||
@user = nil if current_user.present? and (@user != current_user)
|
||||
|
||||
@@ -6,7 +6,7 @@ class ExceptionsController < ApplicationController
|
||||
def not_found
|
||||
f = Topic.where(deleted_at: nil, archetype: "regular")
|
||||
|
||||
@popular = f.order('views desc').take(10)
|
||||
@popular = f.order('views desc').take(10)
|
||||
@recent = f.order('created_at desc').take(10)
|
||||
@slug = params[:slug].class == String ? params[:slug] : ''
|
||||
@slug.gsub!('-',' ')
|
||||
|
||||
@@ -11,8 +11,8 @@ class ExcerptController < ApplicationController
|
||||
|
||||
case route[:controller]
|
||||
when 'topics'
|
||||
|
||||
# If we have a post number, retrieve the last post. Otherwise, first post.
|
||||
|
||||
# If we have a post number, retrieve the last post. Otherwise, first post.
|
||||
topic_posts = Post.where(topic_id: route[:topic_id].to_i).order(:post_number)
|
||||
post = route.has_key?(:post_number) ? topic_posts.last : topic_posts.first
|
||||
guardian.ensure_can_see!(post)
|
||||
@@ -22,14 +22,14 @@ class ExcerptController < ApplicationController
|
||||
user = User.where(username_lower: route[:username].downcase).first
|
||||
guardian.ensure_can_see!(user)
|
||||
render :json => user, serializer: UserExcerptSerializer, root: false
|
||||
when 'list'
|
||||
when 'list'
|
||||
if route[:action] == 'category'
|
||||
category = Category.where(slug: route[:category]).first
|
||||
guardian.ensure_can_see!(category)
|
||||
render :json => category, serializer: CategoryExcerptSerializer, root: false
|
||||
end
|
||||
else
|
||||
render nothing: true, status: 404
|
||||
render nothing: true, status: 404
|
||||
end
|
||||
|
||||
rescue ActionController::RoutingError, Discourse::NotFound
|
||||
|
||||
@@ -2,7 +2,7 @@ class FacebookController < ApplicationController
|
||||
skip_before_filter :check_xhr, only: [:frame, :complete]
|
||||
layout false
|
||||
|
||||
def frame
|
||||
def frame
|
||||
redirect_to oauth_consumer.url_for_oauth_code(:permissions => "email")
|
||||
end
|
||||
|
||||
@@ -23,7 +23,7 @@ class FacebookController < ApplicationController
|
||||
|
||||
# non verified accounts are just trouble
|
||||
unless verified
|
||||
render text: "Your account must be verified with facebook, before authenticating with facebook"
|
||||
render text: "Your account must be verified with facebook, before authenticating with facebook"
|
||||
return
|
||||
end
|
||||
|
||||
@@ -41,7 +41,7 @@ class FacebookController < ApplicationController
|
||||
email: me["email"],
|
||||
email_valid: true
|
||||
}
|
||||
|
||||
|
||||
user_info = FacebookUserInfo.where(:facebook_user_id => me["id"]).first
|
||||
|
||||
@data = {
|
||||
@@ -51,23 +51,23 @@ class FacebookController < ApplicationController
|
||||
auth_provider: "Facebook",
|
||||
email_valid: true
|
||||
}
|
||||
|
||||
|
||||
if user_info
|
||||
user = user_info.user
|
||||
if user
|
||||
unless user.active
|
||||
user.active = true
|
||||
user.active = true
|
||||
user.save
|
||||
end
|
||||
log_on_user(user)
|
||||
@data[:authenticated] = true
|
||||
end
|
||||
else
|
||||
else
|
||||
user = User.where(email: me["email"]).first
|
||||
if user
|
||||
FacebookUserInfo.create!(session[:authentication][:facebook].merge(user_id: user.id))
|
||||
unless user.active
|
||||
user.active = true
|
||||
user.active = true
|
||||
user.save
|
||||
end
|
||||
log_on_user(user)
|
||||
@@ -78,15 +78,15 @@ class FacebookController < ApplicationController
|
||||
end
|
||||
|
||||
|
||||
protected
|
||||
protected
|
||||
|
||||
def oauth_consumer
|
||||
require 'koala'
|
||||
|
||||
host = request.host
|
||||
host = request.host
|
||||
host = "#{host}:#{request.port}" if request.port != 80
|
||||
callback_url = "http://#{host}/facebook/complete"
|
||||
|
||||
|
||||
oauth = Koala::Facebook::OAuth.new(SiteSetting.facebook_app_id, SiteSetting.facebook_app_secret, callback_url)
|
||||
end
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
class FaqController < ApplicationController
|
||||
|
||||
skip_before_filter :check_xhr
|
||||
skip_before_filter :check_xhr
|
||||
|
||||
def index
|
||||
render layout: false
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class ForumsController < ApplicationController
|
||||
|
||||
|
||||
skip_before_filter :check_xhr, only: [:request_access, :request_access_submit, :status]
|
||||
skip_before_filter :check_restricted_access, only: [:status]
|
||||
skip_before_filter :authorize_mini_profiler, only: [:status]
|
||||
|
||||
@@ -8,7 +8,7 @@ class InvitesController < ApplicationController
|
||||
|
||||
if invite.present?
|
||||
user = invite.redeem
|
||||
if user.present?
|
||||
if user.present?
|
||||
log_on_user(user)
|
||||
|
||||
# Send a welcome message if required
|
||||
@@ -31,7 +31,7 @@ class InvitesController < ApplicationController
|
||||
def destroy
|
||||
requires_parameter(:email)
|
||||
|
||||
invite = Invite.where(invited_by_id: current_user.id, email: params[:email]).first
|
||||
invite = Invite.where(invited_by_id: current_user.id, email: params[:email]).first
|
||||
raise Discourse::InvalidParameters.new(:email) if invite.blank?
|
||||
invite.destroy
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ class ListController < ApplicationController
|
||||
|
||||
# Create our filters
|
||||
[:popular, :favorited, :read, :posted, :unread, :new].each do |filter|
|
||||
define_method(filter) do
|
||||
define_method(filter) do
|
||||
|
||||
list_opts = {page: params[:page]}
|
||||
|
||||
@@ -23,14 +23,14 @@ class ListController < ApplicationController
|
||||
|
||||
list = TopicQuery.new(current_user, list_opts).send("list_#{filter}")
|
||||
list.more_topics_url = url_for(self.send "#{filter}_path".to_sym, list_opts.merge(format: 'json', page: next_page))
|
||||
|
||||
|
||||
respond(list)
|
||||
end
|
||||
end
|
||||
end
|
||||
alias_method :index, :popular
|
||||
|
||||
def category
|
||||
|
||||
|
||||
query = TopicQuery.new(current_user, page: params[:page])
|
||||
list = nil
|
||||
|
||||
@@ -54,7 +54,7 @@ class ListController < ApplicationController
|
||||
|
||||
list.draft_key = Draft::NEW_TOPIC
|
||||
list.draft_sequence = DraftSequence.current(current_user, Draft::NEW_TOPIC)
|
||||
|
||||
|
||||
draft = Draft.get(current_user, list.draft_key, list.draft_sequence) if current_user
|
||||
list.draft = draft
|
||||
|
||||
@@ -62,7 +62,7 @@ class ListController < ApplicationController
|
||||
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
@list = list
|
||||
@list = list
|
||||
store_preloaded('topic_list', MultiJson.dump(TopicListSerializer.new(list, scope: guardian)))
|
||||
render 'list'
|
||||
end
|
||||
@@ -71,7 +71,7 @@ class ListController < ApplicationController
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def next_page
|
||||
params[:page].to_i + 1
|
||||
end
|
||||
|
||||
@@ -16,8 +16,8 @@ class PostActionsController < ApplicationController
|
||||
|
||||
post_serializer = PostSerializer.new(@post, scope: guardian, root: false)
|
||||
render_json_dump(post_serializer)
|
||||
else
|
||||
raise Discourse::InvalidParameters.new(:post_action_type_id)
|
||||
else
|
||||
raise Discourse::InvalidParameters.new(:post_action_type_id)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -52,7 +52,7 @@ class PostActionsController < ApplicationController
|
||||
PostAction.clear_flags!(@post, current_user.id, params[:post_action_type_id].to_i)
|
||||
@post.reload
|
||||
|
||||
if @post.is_flagged?
|
||||
if @post.is_flagged?
|
||||
render json: {success: true, hidden: true}
|
||||
else
|
||||
@post.unhide!
|
||||
@@ -62,9 +62,9 @@ class PostActionsController < ApplicationController
|
||||
|
||||
private
|
||||
|
||||
def fetch_post_from_params
|
||||
def fetch_post_from_params
|
||||
requires_parameter(:id)
|
||||
@post = Post.where(id: params[:id]).first
|
||||
@post = Post.where(id: params[:id]).first
|
||||
guardian.ensure_can_see!(@post)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -34,7 +34,7 @@ class PostsController < ApplicationController
|
||||
|
||||
def update
|
||||
requires_parameter(:post)
|
||||
|
||||
|
||||
@post = Post.where(id: params[:id]).first
|
||||
@post.image_sizes = params[:image_sizes] if params[:image_sizes].present?
|
||||
guardian.ensure_can_edit!(@post)
|
||||
@@ -56,7 +56,7 @@ class PostsController < ApplicationController
|
||||
|
||||
def by_number
|
||||
@post = Post.where(topic_id: params[:topic_id], post_number: params[:post_number]).first
|
||||
guardian.ensure_can_see!(@post)
|
||||
guardian.ensure_can_see!(@post)
|
||||
@post.revert_to(params[:version].to_i) if params[:version].present?
|
||||
post_serializer = PostSerializer.new(@post, scope: guardian, root: false)
|
||||
post_serializer.add_raw = true
|
||||
@@ -66,7 +66,7 @@ class PostsController < ApplicationController
|
||||
def show
|
||||
@post = Post.where(id: params[:id]).first
|
||||
guardian.ensure_can_see!(@post)
|
||||
|
||||
|
||||
@post.revert_to(params[:version].to_i) if params[:version].present?
|
||||
post_serializer = PostSerializer.new(@post, scope: guardian, root: false)
|
||||
post_serializer.add_raw = true
|
||||
@@ -82,7 +82,7 @@ class PostsController < ApplicationController
|
||||
else
|
||||
post.recover
|
||||
end
|
||||
Topic.reset_highest(post.topic_id)
|
||||
Topic.reset_highest(post.topic_id)
|
||||
end
|
||||
render nothing: true
|
||||
end
|
||||
@@ -125,7 +125,7 @@ class PostsController < ApplicationController
|
||||
def bookmark
|
||||
post = Post.where(id: params[:post_id]).first
|
||||
guardian.ensure_can_see!(post)
|
||||
if current_user
|
||||
if current_user
|
||||
if params[:bookmarked] == "true"
|
||||
PostAction.act(current_user, post, PostActionType.Types[:bookmark])
|
||||
else
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
class PrivacyController < ApplicationController
|
||||
|
||||
skip_before_filter :check_xhr
|
||||
skip_before_filter :check_xhr
|
||||
|
||||
def index
|
||||
render layout: false
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -13,7 +13,7 @@ class RequestAccessController < ApplicationController
|
||||
if params[:password] == SiteSetting.access_password
|
||||
cookies.permanent['_access'] = SiteSetting.access_password
|
||||
redirect_to @return_path
|
||||
else
|
||||
else
|
||||
flash[:error] = I18n.t(:'request_access.incorrect')
|
||||
render :new, layout: 'no_js'
|
||||
end
|
||||
|
||||
@@ -12,7 +12,7 @@ class SessionController < ApplicationController
|
||||
@user = User.where(username_lower: login).first
|
||||
end
|
||||
|
||||
if @user.present?
|
||||
if @user.present?
|
||||
|
||||
# If the site requires user approval and the user is not approved yet
|
||||
if SiteSetting.must_approve_users? and !@user.approved?
|
||||
|
||||
@@ -19,4 +19,4 @@ class StaticController < ApplicationController
|
||||
render file: 'public/404', layout: false, status: 404
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,15 +4,15 @@ require_dependency 'promotion'
|
||||
class TopicsController < ApplicationController
|
||||
|
||||
# Avatar is an image request, not XHR
|
||||
before_filter :ensure_logged_in, only: [:timings,
|
||||
:destroy_timings,
|
||||
:update,
|
||||
:star,
|
||||
:destroy,
|
||||
:status,
|
||||
:invite,
|
||||
:mute,
|
||||
:unmute,
|
||||
before_filter :ensure_logged_in, only: [:timings,
|
||||
:destroy_timings,
|
||||
:update,
|
||||
:star,
|
||||
:destroy,
|
||||
:status,
|
||||
:invite,
|
||||
:mute,
|
||||
:unmute,
|
||||
:set_notifications,
|
||||
:move_posts]
|
||||
|
||||
@@ -26,8 +26,8 @@ class TopicsController < ApplicationController
|
||||
Promotion.new(current_user).review if current_user.trust_level == TrustLevel.Levels[:new]
|
||||
end
|
||||
|
||||
@topic_view = TopicView.new(params[:id] || params[:topic_id],
|
||||
current_user,
|
||||
@topic_view = TopicView.new(params[:id] || params[:topic_id],
|
||||
current_user,
|
||||
username_filters: params[:username_filters],
|
||||
best_of: params[:best_of],
|
||||
page: params[:page])
|
||||
@@ -40,7 +40,7 @@ class TopicsController < ApplicationController
|
||||
split = fullpath.split('/')
|
||||
split[2] = @topic_view.topic.slug
|
||||
|
||||
redirect_to split.join('/'), status: 301
|
||||
redirect_to split.join('/'), status: 301
|
||||
return
|
||||
end
|
||||
|
||||
@@ -56,8 +56,8 @@ class TopicsController < ApplicationController
|
||||
# No filter? Consider it a paged view, default to page 0 which is the first segment
|
||||
@topic_view.filter_posts_paged(params[:page].to_i)
|
||||
end
|
||||
View.create_for(@topic_view.topic, request.remote_ip, current_user)
|
||||
|
||||
View.create_for(@topic_view.topic, request.remote_ip, current_user)
|
||||
|
||||
@topic_view.draft_key = @topic_view.topic.draft_key
|
||||
@topic_view.draft_sequence = DraftSequence.current(current_user, @topic_view.draft_key)
|
||||
|
||||
@@ -74,9 +74,9 @@ class TopicsController < ApplicationController
|
||||
|
||||
if params[:post_number]
|
||||
@post = @topic_view.posts.select{|p| p.post_number == params[:post_number].to_i}.first
|
||||
page = ((params[:post_number].to_i - 1) / SiteSetting.posts_per_page) + 1
|
||||
@canonical << "?page=#{page}" if page > 1
|
||||
else
|
||||
page = ((params[:post_number].to_i - 1) / SiteSetting.posts_per_page) + 1
|
||||
@canonical << "?page=#{page}" if page > 1
|
||||
else
|
||||
@canonical << "?page=#{params[:page]}" if params[:page] && params[:page].to_i > 1
|
||||
end
|
||||
|
||||
@@ -91,7 +91,7 @@ class TopicsController < ApplicationController
|
||||
format.json do
|
||||
render_json_dump(topic_view_serializer)
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -104,11 +104,11 @@ class TopicsController < ApplicationController
|
||||
|
||||
def update
|
||||
topic = Topic.where(id: params[:topic_id]).first
|
||||
guardian.ensure_can_edit!(topic)
|
||||
guardian.ensure_can_edit!(topic)
|
||||
topic.title = params[:title] if params[:title].present?
|
||||
|
||||
# TODO: we may need smarter rules about converting archetypes
|
||||
if current_user.admin?
|
||||
if current_user.admin?
|
||||
topic.archetype = "regular" if params[:archetype] == 'regular'
|
||||
end
|
||||
|
||||
@@ -138,7 +138,7 @@ class TopicsController < ApplicationController
|
||||
render nothing: true
|
||||
end
|
||||
|
||||
def mute
|
||||
def mute
|
||||
toggle_mute(true)
|
||||
end
|
||||
|
||||
@@ -153,9 +153,9 @@ class TopicsController < ApplicationController
|
||||
topic.destroy
|
||||
render nothing: true
|
||||
end
|
||||
|
||||
|
||||
def excerpt
|
||||
render nothing: true
|
||||
render nothing: true
|
||||
end
|
||||
|
||||
def invite
|
||||
@@ -163,7 +163,7 @@ class TopicsController < ApplicationController
|
||||
topic = Topic.where(id: params[:topic_id]).first
|
||||
guardian.ensure_can_invite_to!(topic)
|
||||
|
||||
if topic.invite(current_user, params[:user])
|
||||
if topic.invite(current_user, params[:user])
|
||||
render json: success_json
|
||||
else
|
||||
render json: failed_json, status: 422
|
||||
@@ -195,14 +195,14 @@ class TopicsController < ApplicationController
|
||||
# TODO: all this should be optimised, tested better
|
||||
|
||||
last_seen_key = "user-last-seen:#{current_user.id}"
|
||||
last_seen = $redis.get(last_seen_key)
|
||||
last_seen = $redis.get(last_seen_key)
|
||||
if last_seen.present?
|
||||
diff = (Time.now.to_f - last_seen.to_f).round
|
||||
if diff > 0
|
||||
User.update_all ["time_read = time_read + ?", diff], ["id = ? and time_read = ?", current_user.id, current_user.time_read]
|
||||
User.update_all ["time_read = time_read + ?", diff], ["id = ? and time_read = ?", current_user.id, current_user.time_read]
|
||||
end
|
||||
end
|
||||
$redis.set(last_seen_key, Time.now.to_f)
|
||||
end
|
||||
$redis.set(last_seen_key, Time.now.to_f)
|
||||
|
||||
original_unread = current_user.unread_notifications_by_type
|
||||
|
||||
@@ -211,27 +211,27 @@ class TopicsController < ApplicationController
|
||||
added_time = 0
|
||||
|
||||
|
||||
if params[:timings].present?
|
||||
if params[:timings].present?
|
||||
params[:timings].each do |post_number_str, t|
|
||||
post_number = post_number_str.to_i
|
||||
|
||||
if post_number >= 0
|
||||
|
||||
if post_number >= 0
|
||||
if (highest_seen || 0) >= post_number
|
||||
Notification.mark_post_read(current_user, topic_id, post_number)
|
||||
end
|
||||
|
||||
PostTiming.record_timing(topic_id: topic_id,
|
||||
post_number: post_number,
|
||||
user_id: current_user.id,
|
||||
post_number: post_number,
|
||||
user_id: current_user.id,
|
||||
msecs: t.to_i)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
TopicUser.update_last_read(current_user, topic_id, highest_seen, params[:topic_time].to_i)
|
||||
|
||||
current_user.reload
|
||||
|
||||
|
||||
if current_user.unread_notifications_by_type != original_unread
|
||||
current_user.publish_notifications_state
|
||||
end
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
class TosController < ApplicationController
|
||||
|
||||
skip_before_filter :check_xhr
|
||||
skip_before_filter :check_xhr
|
||||
|
||||
def index
|
||||
render layout: false
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,13 +2,13 @@ class TwitterController < ApplicationController
|
||||
skip_before_filter :check_xhr, only: [:frame, :complete]
|
||||
layout false
|
||||
|
||||
def frame
|
||||
def frame
|
||||
|
||||
# defer the require as late as possible
|
||||
require 'oauth'
|
||||
|
||||
consumer = oauth_consumer
|
||||
host = request.host
|
||||
host = request.host
|
||||
host = "#{host}:#{request.port}" if request.port != 80
|
||||
request_token = consumer.get_request_token(:oauth_callback => "http://#{host}/twitter/complete")
|
||||
|
||||
@@ -21,10 +21,10 @@ class TwitterController < ApplicationController
|
||||
def complete
|
||||
|
||||
require 'oauth'
|
||||
|
||||
|
||||
consumer = oauth_consumer
|
||||
|
||||
unless session[:request_token] && session[:request_token_secret]
|
||||
|
||||
unless session[:request_token] && session[:request_token_secret]
|
||||
render :text => ('No authentication information was found in the session. Please try again.') and return
|
||||
end
|
||||
|
||||
@@ -40,26 +40,26 @@ class TwitterController < ApplicationController
|
||||
|
||||
screen_name = access_token.params["screen_name"]
|
||||
twitter_user_id = access_token.params["user_id"]
|
||||
|
||||
|
||||
session[:authentication] = {
|
||||
twitter_user_id: twitter_user_id,
|
||||
twitter_screen_name: screen_name
|
||||
}
|
||||
|
||||
|
||||
user_info = TwitterUserInfo.where(:twitter_user_id => twitter_user_id).first
|
||||
|
||||
@data = {
|
||||
username: screen_name,
|
||||
auth_provider: "Twitter"
|
||||
}
|
||||
|
||||
|
||||
if user_info
|
||||
if user_info.user.active
|
||||
log_on_user(user_info.user)
|
||||
@data[:authenticated] = true
|
||||
else
|
||||
@data[:awaiting_activation] = true
|
||||
# send another email ?
|
||||
# send another email ?
|
||||
end
|
||||
else
|
||||
#TODO typheous or some other webscale http request lib that does not block thins
|
||||
@@ -71,11 +71,11 @@ class TwitterController < ApplicationController
|
||||
end
|
||||
|
||||
|
||||
protected
|
||||
protected
|
||||
|
||||
def oauth_consumer
|
||||
OAuth::Consumer.new(
|
||||
SiteSetting.twitter_consumer_key,
|
||||
SiteSetting.twitter_consumer_key,
|
||||
SiteSetting.twitter_consumer_secret,
|
||||
:site => "https://api.twitter.com",
|
||||
:authorize_path => '/oauth/authenticate'
|
||||
|
||||
@@ -3,9 +3,9 @@ class UserActionsController < ApplicationController
|
||||
requires_parameters(:user_id)
|
||||
per_chunk = 60
|
||||
render :json => UserAction.stream(
|
||||
user_id: params[:user_id].to_i,
|
||||
offset: params[:offset],
|
||||
limit: per_chunk,
|
||||
user_id: params[:user_id].to_i,
|
||||
offset: params[:offset],
|
||||
limit: per_chunk,
|
||||
action_types: (params[:filter] || "").split(","),
|
||||
guardian: guardian,
|
||||
ignore_private_messages: params[:filter] ? false : true
|
||||
|
||||
@@ -7,12 +7,12 @@ require_dependency 'email'
|
||||
|
||||
|
||||
class UserOpenIdsController < ApplicationController
|
||||
layout false
|
||||
layout false
|
||||
|
||||
# need to be able to call this
|
||||
skip_before_filter :check_xhr
|
||||
|
||||
# must be done, cause we may trigger a POST
|
||||
skip_before_filter :check_xhr
|
||||
|
||||
# must be done, cause we may trigger a POST
|
||||
skip_before_filter :verify_authenticity_token, :only => :complete
|
||||
|
||||
def frame
|
||||
@@ -26,9 +26,9 @@ class UserOpenIdsController < ApplicationController
|
||||
end
|
||||
|
||||
def destroy
|
||||
@open_id = UserOpenId.find(params[:id])
|
||||
@open_id = UserOpenId.find(params[:id])
|
||||
if @open_id.user.id == current_user.id
|
||||
@open_id.destroy
|
||||
@open_id.destroy
|
||||
end
|
||||
redirect_to current_user
|
||||
end
|
||||
@@ -40,25 +40,25 @@ class UserOpenIdsController < ApplicationController
|
||||
def create
|
||||
url = params[:user_open_id]
|
||||
|
||||
begin
|
||||
# validations
|
||||
@open_id = UserOpenId.new(url)
|
||||
begin
|
||||
# validations
|
||||
@open_id = UserOpenId.new(url)
|
||||
open_id_request = openid_consumer.begin @open_id.url
|
||||
return_to, realm = ['complete','index'].map {|a| url_for :action => a, :only_path => false}
|
||||
return_to, realm = ['complete','index'].map {|a| url_for :action => a, :only_path => false}
|
||||
|
||||
add_ax_request(open_id_request)
|
||||
add_sreg_request(open_id_request)
|
||||
|
||||
# immediate mode is not required
|
||||
add_ax_request(open_id_request)
|
||||
add_sreg_request(open_id_request)
|
||||
|
||||
# immediate mode is not required
|
||||
if open_id_request.send_redirect?(realm, return_to, false)
|
||||
redirect_to open_id_request.redirect_url(realm, return_to, false)
|
||||
else
|
||||
else
|
||||
logger.warn("send_redirect? returned false")
|
||||
render :text, open_id_request.html_markup(realm, return_to, false, {'id' => 'openid_form'})
|
||||
end
|
||||
rescue => e
|
||||
flash[:error] = "There seems to be something wrong with your open id url"
|
||||
logger.warn("failed to load contact open id: " + e.to_s)
|
||||
flash[:error] = "There seems to be something wrong with your open id url"
|
||||
logger.warn("failed to load contact open id: " + e.to_s)
|
||||
render :text => 'Something went wrong, we have been notified, try again soon'
|
||||
end
|
||||
end
|
||||
@@ -67,12 +67,12 @@ class UserOpenIdsController < ApplicationController
|
||||
current_url = url_for(:action => 'complete', :only_path => false)
|
||||
parameters = params.reject{|k,v|request.path_parameters[k]}.reject{|k,v| k == 'action' || k == 'controller'}
|
||||
open_id_response = openid_consumer.complete(parameters, current_url)
|
||||
|
||||
|
||||
case open_id_response.status
|
||||
when OpenID::Consumer::SUCCESS
|
||||
data = {}
|
||||
data = {}
|
||||
if params[:did_sreg]
|
||||
data = get_sreg_response(open_id_response)
|
||||
data = get_sreg_response(open_id_response)
|
||||
end
|
||||
|
||||
if params[:did_ax]
|
||||
@@ -81,20 +81,20 @@ class UserOpenIdsController < ApplicationController
|
||||
end
|
||||
|
||||
trusted = open_id_response.endpoint.server_url =~ /^https:\/\/www.google.com\// ||
|
||||
open_id_response.endpoint.server_url =~ /^https:\/\/me.yahoo.com\//
|
||||
open_id_response.endpoint.server_url =~ /^https:\/\/me.yahoo.com\//
|
||||
|
||||
email = data[:email]
|
||||
user_open_id = UserOpenId.where(url: open_id_response.display_identifier).first
|
||||
user_open_id = UserOpenId.where(url: open_id_response.display_identifier).first
|
||||
|
||||
if trusted && user_open_id.nil? && user = User.where(email: email).first
|
||||
# we trust so do an email lookup
|
||||
user_open_id = UserOpenId.create(url: open_id_response.display_identifier, user_id: user.id, email: email, active: true)
|
||||
end
|
||||
|
||||
|
||||
authenticated = !user_open_id.nil?
|
||||
|
||||
if authenticated
|
||||
user = user_open_id.user
|
||||
user = user_open_id.user
|
||||
|
||||
# If we have to approve users
|
||||
if SiteSetting.must_approve_users? and !user.approved?
|
||||
@@ -104,10 +104,10 @@ class UserOpenIdsController < ApplicationController
|
||||
@data = {authenticated: true}
|
||||
end
|
||||
|
||||
else
|
||||
else
|
||||
@data = {
|
||||
email: email,
|
||||
name: User.suggest_name(email),
|
||||
name: User.suggest_name(email),
|
||||
username: User.suggest_username(email),
|
||||
email_valid: trusted,
|
||||
auth_provider: "Google"
|
||||
@@ -116,24 +116,24 @@ class UserOpenIdsController < ApplicationController
|
||||
email: @data[:email],
|
||||
email_valid: @data[:email_valid],
|
||||
openid_url: open_id_response.display_identifier
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
else
|
||||
# note there are lots of failure reasons, we treat them all as failures
|
||||
else
|
||||
# note there are lots of failure reasons, we treat them all as failures
|
||||
logger.warn("Verification #{open_id_response.display_identifier || "" }"\
|
||||
" failed: #{open_id_response.status.to_s}" )
|
||||
logger.warn(open_id_response.message)
|
||||
flash[:error] = "Sorry, I seem to be having trouble confirming your open id account, please try again!"
|
||||
render :text => "Apologies, something went wrong ... try again soon"
|
||||
end
|
||||
flash[:error] = "Sorry, I seem to be having trouble confirming your open id account, please try again!"
|
||||
render :text => "Apologies, something went wrong ... try again soon"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
protected
|
||||
protected
|
||||
|
||||
|
||||
def persist_session
|
||||
def persist_session
|
||||
if s = UserSession.find
|
||||
s.remember_me = true
|
||||
s.save
|
||||
@@ -141,16 +141,16 @@ class UserOpenIdsController < ApplicationController
|
||||
end
|
||||
|
||||
def openid_consumer
|
||||
@openid_consumer ||= OpenID::Consumer.new(session,
|
||||
@openid_consumer ||= OpenID::Consumer.new(session,
|
||||
OpenID::Store::Filesystem.new("#{Rails.root}/tmp/openid"))
|
||||
end
|
||||
|
||||
def get_sreg_response(open_id_response)
|
||||
data = {}
|
||||
data = {}
|
||||
sreg_resp = OpenID::SReg::Response.from_success_response(open_id_response)
|
||||
unless sreg_resp.empty?
|
||||
data[:email] = sreg_resp.data['email']
|
||||
data[:nickname] = sreg_resp.data['nickname']
|
||||
data[:nickname] = sreg_resp.data['nickname']
|
||||
end
|
||||
data
|
||||
end
|
||||
@@ -159,15 +159,15 @@ class UserOpenIdsController < ApplicationController
|
||||
data = {}
|
||||
ax_resp = OpenID::AX::FetchResponse.from_success_response(open_id_response)
|
||||
if ax_resp && !ax_resp.data.empty?
|
||||
data[:email] = ax_resp.data['http://schema.openid.net/contact/email'][0]
|
||||
data[:email] = ax_resp.data['http://schema.openid.net/contact/email'][0]
|
||||
end
|
||||
data
|
||||
data
|
||||
end
|
||||
|
||||
def add_sreg_request(open_id_request)
|
||||
def add_sreg_request(open_id_request)
|
||||
sreg_request = OpenID::SReg::Request.new
|
||||
sreg_request.request_fields(['email'], true)
|
||||
# optional
|
||||
# optional
|
||||
sreg_request.request_fields(['dob', 'fullname', 'nickname'], false)
|
||||
open_id_request.add_extension(sreg_request)
|
||||
open_id_request.return_to_args['did_sreg'] = 'y'
|
||||
@@ -175,14 +175,14 @@ class UserOpenIdsController < ApplicationController
|
||||
end
|
||||
|
||||
def add_ax_request(open_id_request)
|
||||
ax_request = OpenID::AX::FetchRequest.new
|
||||
requested_attrs = [
|
||||
ax_request = OpenID::AX::FetchRequest.new
|
||||
requested_attrs = [
|
||||
['namePerson', 'fullname'],
|
||||
['namePerson/friendly', 'nickname'],
|
||||
['contact/email', 'email', true],
|
||||
['contact/web/default', 'web_default'],
|
||||
['birthDate', 'dob'],
|
||||
['contact/country/home', 'country']
|
||||
['contact/country/home', 'country']
|
||||
]
|
||||
|
||||
requested_attrs.each {|a| ax_request.add(OpenID::AX::AttrInfo.new("http://schema.openid.net/#{a[0]}", a[1], a[2] || false))}
|
||||
|
||||
@@ -7,8 +7,8 @@ class UsersController < ApplicationController
|
||||
skip_before_filter :check_restricted_access, only: [:avatar]
|
||||
|
||||
before_filter :ensure_logged_in, only: [:username, :update, :change_email, :user_preferences_redirect]
|
||||
|
||||
def show
|
||||
|
||||
def show
|
||||
@user = fetch_user_from_params
|
||||
anonymous_etag(@user) do
|
||||
render_serialized(@user, UserSerializer)
|
||||
@@ -25,7 +25,7 @@ class UsersController < ApplicationController
|
||||
json_result(user) do |u|
|
||||
|
||||
website = params[:website]
|
||||
if website
|
||||
if website
|
||||
website = "http://" + website unless website =~ /^http/
|
||||
end
|
||||
|
||||
@@ -42,19 +42,19 @@ class UsersController < ApplicationController
|
||||
end
|
||||
|
||||
u.save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def username
|
||||
requires_parameter(:new_username)
|
||||
|
||||
user = fetch_user_from_params
|
||||
guardian.ensure_can_edit!(user)
|
||||
|
||||
guardian.ensure_can_edit!(user)
|
||||
|
||||
result = user.change_username(params[:new_username])
|
||||
raise Discourse::InvalidParameters.new(:new_username) unless result
|
||||
|
||||
render nothing: true
|
||||
render nothing: true
|
||||
end
|
||||
|
||||
def preferences
|
||||
@@ -144,7 +144,7 @@ class UsersController < ApplicationController
|
||||
|
||||
if user.save
|
||||
|
||||
msg = nil
|
||||
msg = nil
|
||||
active_result = user.active?
|
||||
if active_result
|
||||
|
||||
@@ -158,7 +158,7 @@ class UsersController < ApplicationController
|
||||
msg = I18n.t("login.active")
|
||||
end
|
||||
|
||||
else
|
||||
else
|
||||
msg = I18n.t("login.activate_email", email: user.email)
|
||||
Jobs.enqueue(:user_email, type: :signup, user_id: user.id, email_token: user.email_tokens.first.token)
|
||||
end
|
||||
@@ -174,8 +174,8 @@ class UsersController < ApplicationController
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# Clear authentication session.
|
||||
|
||||
# Clear authentication session.
|
||||
session[:authentication] = nil
|
||||
|
||||
# JSON result
|
||||
@@ -196,22 +196,22 @@ class UsersController < ApplicationController
|
||||
|
||||
# all avatars are funneled through here
|
||||
def avatar
|
||||
|
||||
|
||||
# TEMP to catch all missing spots
|
||||
# raise ActiveRecord::RecordNotFound
|
||||
|
||||
|
||||
user = User.select(:email).where(:username_lower => params[:username].downcase).first
|
||||
if user
|
||||
# for now we only support gravatar in square (redirect cached for a day), later we can use x-sendfile and/or a cdn to serve local
|
||||
size = params[:size].to_i
|
||||
size = 64 if size == 0
|
||||
size = 10 if size < 10
|
||||
size = 128 if size > 128
|
||||
|
||||
size = 128 if size > 128
|
||||
|
||||
url = user.avatar_template.gsub("{size}", size.to_s)
|
||||
expires_in 1.day
|
||||
redirect_to url
|
||||
else
|
||||
redirect_to url
|
||||
else
|
||||
raise ActiveRecord::RecordNotFound
|
||||
end
|
||||
end
|
||||
@@ -235,12 +235,12 @@ class UsersController < ApplicationController
|
||||
log_on_user(@user)
|
||||
flash[:success] = I18n.t('password_reset.success')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
render :layout => 'no_js'
|
||||
end
|
||||
|
||||
|
||||
def change_email
|
||||
requires_parameter(:email)
|
||||
user = fetch_user_from_params
|
||||
@@ -250,13 +250,13 @@ class UsersController < ApplicationController
|
||||
raise Discourse::InvalidParameters.new(:email) if User.where("lower(email) = ?", params[:email].downcase).exists?
|
||||
|
||||
email_token = user.email_tokens.create(email: params[:email])
|
||||
Jobs.enqueue(:user_email,
|
||||
to_address: params[:email],
|
||||
type: :authorize_email,
|
||||
user_id: user.id,
|
||||
Jobs.enqueue(:user_email,
|
||||
to_address: params[:email],
|
||||
type: :authorize_email,
|
||||
user_id: user.id,
|
||||
email_token: email_token.token)
|
||||
|
||||
render nothing: true
|
||||
render nothing: true
|
||||
end
|
||||
|
||||
def authorize_email
|
||||
@@ -274,7 +274,7 @@ class UsersController < ApplicationController
|
||||
if @user = EmailToken.confirm(params[:token])
|
||||
|
||||
# Log in the user unless they need to be approved
|
||||
if SiteSetting.must_approve_users?
|
||||
if SiteSetting.must_approve_users?
|
||||
@needs_approval = true
|
||||
else
|
||||
@user.enqueue_welcome_message('welcome_user') if @user.send_welcome_message
|
||||
@@ -295,25 +295,25 @@ class UsersController < ApplicationController
|
||||
|
||||
sql = "select username, name, email from users u "
|
||||
if topic_id
|
||||
sql << "left join (select distinct p.user_id from posts p where topic_id = :topic_id) s on
|
||||
sql << "left join (select distinct p.user_id from posts p where topic_id = :topic_id) s on
|
||||
s.user_id = u.id "
|
||||
end
|
||||
|
||||
if term.length > 0
|
||||
sql << "where username_lower like :term_like or
|
||||
to_tsvector('simple', name) @@
|
||||
sql << "where username_lower like :term_like or
|
||||
to_tsvector('simple', name) @@
|
||||
to_tsquery('simple',
|
||||
regexp_replace(
|
||||
regexp_replace(
|
||||
cast(plainto_tsquery(:term) as text)
|
||||
regexp_replace(
|
||||
cast(plainto_tsquery(:term) as text)
|
||||
,'\''(?: |$)', ':*''', 'g'),
|
||||
'''', '', 'g')
|
||||
) "
|
||||
|
||||
|
||||
end
|
||||
|
||||
sql << "order by case when username_lower = :term then 0 else 1 end asc, "
|
||||
if topic_id
|
||||
if topic_id
|
||||
sql << " case when s.user_id is null then 0 else 1 end desc, "
|
||||
end
|
||||
|
||||
@@ -325,7 +325,7 @@ class UsersController < ApplicationController
|
||||
r.delete("email")
|
||||
r
|
||||
end
|
||||
render :json => results
|
||||
render :json => results
|
||||
end
|
||||
|
||||
private
|
||||
@@ -341,11 +341,11 @@ class UsersController < ApplicationController
|
||||
def fetch_user_from_params
|
||||
username_lower = params[:username].downcase
|
||||
username_lower.gsub!(/\.json$/, '')
|
||||
|
||||
|
||||
user = User.where(username_lower: username_lower).first
|
||||
raise Discourse::NotFound.new if user.blank?
|
||||
|
||||
guardian.ensure_can_see!(user)
|
||||
user
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user