Skip to content
Extraits de code Groupes Projets
invitations_controller.rb 2,1 ko
Newer Older
  • Learn to ignore specific revisions
  • ilya's avatar
    ilya a validé
    #   Copyright (c) 2010, Diaspora Inc.  This file is
    #   licensed under the Affero General Public License version 3 or later.  See
    #   the COPYRIGHT file.
    
    class InvitationsController < Devise::InvitationsController
    
        sent_invitations = current_user.invitations_from_me.includes(:recipient)
        @emails_delivered = sent_invitations.map!{ |i| i.recipient.email }
    
    ilya's avatar
    ilya a validé
      def create
    
          if current_user.invites == 0
            flash[:error] = I18n.t 'invitations.create.no_more'
            redirect_to :back
            return
          end
    
    maxwell's avatar
    maxwell a validé
          aspect = params[:user].delete(:aspects)
    
          message = params[:user].delete(:invite_messages)
    
          emails = params[:user][:email].to_s.gsub(/\s/, '').split(/, */)
    
    maxwell's avatar
    maxwell a validé
          good_emails, bad_emails = emails.partition{|e| e.try(:match, Devise.email_regexp)}
    
    
          good_emails.each{|e| Resque.enqueue(Job::InviteUser, current_user.id, e, aspect, message)}
    
    maxwell's avatar
    maxwell a validé
    
          if bad_emails.any?
            flash[:error] = I18n.t('invitations.create.sent') + good_emails.join(', ') + " "+ I18n.t('invitations.create.rejected') + bad_emails.join(', ')
    
    maxwell's avatar
    maxwell a validé
            flash[:notice] = I18n.t('invitations.create.sent') + good_emails.join(', ')
    
    ilya's avatar
    ilya a validé
      def update
        begin
    
          invitation_token = params[:user][:invitation_token]
          if invitation_token.nil? || invitation_token.blank?
    
            raise I18n.t('invitations.check_token.not_found')
    
          user = User.find_by_invitation_token(params[:user][:invitation_token])
    
          user.accept_invitation!(params[:user])
    
          user.seed_aspects
    
        rescue Exception => e
    
    ilya's avatar
    ilya a validé
          user = nil
          flash[:error] = e.message
        end
    
    ilya's avatar
    ilya a validé
        if user
          flash[:notice] = I18n.t 'registrations.create.success'
          sign_in_and_redirect(:user, user)
        else
    
          redirect_to accept_user_invitation_path(
            :invitation_token => params[:user][:invitation_token])
    
    ilya's avatar
    ilya a validé
        end
      end
    
    
      protected
    
      def check_token
    
        if User.find_by_invitation_token(params[:invitation_token]).nil?
    
    MrZYX's avatar
    MrZYX a validé
          flash[:error] = I18n.t 'invitations.check_token.not_found'
    
          redirect_to root_url
        end
      end
    
    ilya's avatar
    ilya a validé
    end