Package gotnames.web.st

Source Code of gotnames.web.st.CreateGroupTask$Values

package gotnames.web.st;

import gotnames.Utils;
import gotnames.dm.Group;
import gotnames.dm.KTrans;
import gotnames.dm.User;
import gotnames.dm.User.Gender;
import gotnames.web.GotNamesServlet.UserAuthenticator;

import java.util.List;

import javax.jdo.PersistenceManager;

import com.medallia.spider.DropdownElement;
import com.medallia.spider.RenderTask;

/**
* Task which both renders and receives the form used to create a new group. A
* user gets here by clicking on the link in the email they got from
* {@link RegisterTask}.
*/
public class CreateGroupTask extends RenderTask {
 
  @Input interface Params {
    String auth();
    String name();
   
    String email();
    String firstName();
    String lastName();
    Gender gender();
  }
 
  @Output interface Values {
    V<List<DropdownElement>> GENDER_OPTIONS = v();
    V<String> EMAIL = v();
    V<String> TOKEN = v();
  }
 
  PostAction action(final Params p, UserAuthenticator userAuthenticator, PersistenceManager pm) {
    final String email = p.email();
    String token = p.auth();
   
    if (email == null || token == null || !token.equals(RegisterTask.makeEmailToken(email)))
      return rawStringUtf8("Invalid token");
   
    final String name = p.name();
    if (name != null) {
      // create the group
      final Group g = new KTrans<Group>(pm) {
        @Override protected Group call() {
          Group g = new Group();
          g.setName(name);
         
          pm.makePersistent(g);
         
          return g;
        }
      }.go();
     
      // create first admin user
      String authToken = new KTrans<String>(pm) {
        @Override protected String call() {
          User u = User.newUser(g.getKey());
         
          u.setEmail(email);
          u.setFirstName(Utils.notNull(p.firstName(), "First name is required"));
          u.setLastName(Utils.notNull(p.lastName(), "Last name is required"));
          u.setGender(Utils.notNull(p.gender(), "Gender is required"));
         
          u.setAdmin(true);
         
          pm.makePersistent(u);
         
          return u.getAuthToken();
        }
      }.go();
     
      // authenticate admin user
      userAuthenticator.authenticate(authToken);
     
      return redirectToTask(AdminTask.class);
    } else {
      // render form
      attr(Values.GENDER_OPTIONS, DropdownElement.fromEnum(Gender.class, null));
      attr(Values.EMAIL, email);
      attr(Values.TOKEN, token);
      return null;
    }
  }

  @Override public String getPageTitle() { return "Create Group"; }

}
TOP

Related Classes of gotnames.web.st.CreateGroupTask$Values

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.