+ def destroy
+ res = false
+ User.transaction do
+ self.author.scrolls.each do |scroll|
+ raise ActiveRecord::Rollback unless scroll.destroy_with_scroll_panel
+ end
+ self.author.panels.each do |panel|
+ raise ActiveRecord::Rollback unless panel.destroy_with_elements
+ end
+ if self.artist
+ self.artist.original_pictures.each do |original_picture|
+ raise ActiveRecord::Rollback unless original_picture.destroy_with_resource_picture
+ end
+ raise ActiveRecord::Rollback unless self.artist.destroy
+ end
+ raise ActiveRecord::Rollback unless self.author.destroy
+ raise ActiveRecord::Rollback unless super
+ res = true
+ end
+ res
+ end
+
+ def self.from_omniauth(auth)
+ where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
+ user.name = auth.info.nickname
+ user.email = auth.info.email
+ end
+ end
+
+ def self.new_with_session(params, session)
+ if session["devise.user_attributes"]
+ new(session["devise.user_attributes"], without_protection: true) do |user|
+ user.attributes = params
+ user.valid?
+ end
+ else
+ super
+ end
+ end
+
+ def password_required?
+ super && provider.blank?
+ end
+
+ private
+ def user_params
+ params.require(:user).permit(:email, :password, :password_confirmation, :remember_me, :authentication_token)
+ end
+