public User AddTwitterUser(TwitterLite liteUser) { if (liteUser.Twitter == null || Extensions.ExtensionMethods.IsEmptyOrSpace(liteUser.Twitter.TwitterId)) throw new ParamMissingException("Twitter ID cannot be empty."); else if (TwitterIdExists(liteUser.Twitter.TwitterId)) throw new AlreadyExistsException("Twitter ID already registered."); if (liteUser == null || liteUser.Credentials == null) throw new ParamMissingException("Missing credentials fields."); if (string.IsNullOrEmpty(liteUser.Credentials.Email)) throw new InvalidValueException("Email cannot be empty."); //if (string.IsNullOrEmpty(liteUser.Credentials.Password)) // throw new InvalidValueException("Password cannot be empty."); if (Extensions.ExtensionMethods.IsValidEmail(liteUser.Credentials.Email) == false) throw new InvalidValueException("Invalid email provided."); if (UsernameExists(liteUser.Credentials.Username)) throw new AlreadyExistsException("Username already exists."); if (EmailExists(liteUser.Credentials.Email)) throw new AlreadyExistsException("Email already signed up."); Role role = Repository.Single<Role>(x => x.RoleId.Equals(liteUser.RoleId) && x.Deleted == false); if (role == null) throw new InvalidValueException("Role Id is invalid."); DateTime currentTime = DateTime.UtcNow; User user = new User { CreatedAt = currentTime, Credential = new Credential { CreatedAt = currentTime, CredentialId = Guid.NewGuid().ToString(), Deleted = false, Devices = new List<UserDevice>(0), Email = liteUser.Credentials.Email, LastModified = currentTime, Password = liteUser.Credentials.Password, // Should already be hashed in calling function WebSecurityToken = Guid.NewGuid().ToString(), SecurityToken = Guid.NewGuid().ToString(), TokenExpiry = DateTime.MaxValue, Username = liteUser.Credentials.Username, }, Deleted = false, Twitter = liteUser.Twitter, LastModified = currentTime, Address = liteUser.Address, Photo = liteUser.Photo, RoleId = liteUser.RoleId, UserId = Guid.NewGuid().ToString(), //Zipcode = liteUser.Zipcode, DisplayName = string.IsNullOrEmpty(liteUser.DisplayName) ? string.IsNullOrEmpty(liteUser.Twitter.TwitterId) ? liteUser.Credentials.Username : liteUser.Twitter.TwitterId : liteUser.DisplayName.Trim() }; user.CredentialId = user.Credential.CredentialId; Repository.Add<User>(user); Repository.Save(); return user; }
public HttpResponseMessage PostRegisterWithTwitter(TwitterLite user) { try { /* * 1. Check if all required fields are present. * 2. Take hash of Password. * 3. Make gender lower case. * 4. Check if username is already taken. * 5. Check if email is already registered. * 6. If not, create a new user and return its ID to user. * */ if (user == null) return Request.CreateResponse(HttpStatusCode.NotAcceptable, GetErrorResponse("Missing required param.")); if ( //ExtensionMethods.IsEmptyOrSpace(user.Gender) //|| ExtensionMethods.IsEmptyOrSpace(user.FirstName) //|| ExtensionMethods.IsEmptyOrSpace(user.LastName) ExtensionMethods.IsEmptyOrSpace(user.RoleId) || user.Credentials == null || ExtensionMethods.IsEmptyOrSpace(user.Credentials.Username) //|| ExtensionMethods.IsEmptyOrSpace(user.Credentials.Password) || user.Twitter == null || ExtensionMethods.IsEmptyOrSpace(user.Twitter.TwitterAccessToken) || ExtensionMethods.IsEmptyOrSpace(user.Twitter.TwitterId) || ExtensionMethods.IsEmptyOrSpace(user.Twitter.Handle) || ExtensionMethods.IsEmptyOrSpace(user.Twitter.TwitterSecret) || (ExtensionMethods.IsEmptyOrSpace(user.Twitter.Email) && ExtensionMethods.IsEmptyOrSpace(user.Credentials.Email)) //|| ExtensionMethods.IsEmptyOrSpace(user.Credentials.MobileNumber) ) return Request.CreateResponse(HttpStatusCode.NotAcceptable, GetErrorResponse("Missing required param.")); //user.Credentials.Password = ExtensionMethods.ToSHA1EncodedString(user.Credentials.Password); user.Credentials.Username = user.Credentials.Username.Trim().ToLower(); if (string.IsNullOrEmpty(user.Twitter.Email) == false) user.Twitter.Email = user.Twitter.Email.ToLower(); if (user.Credentials.Email == null || ExtensionMethods.IsEmptyOrSpace(user.Credentials.Email)) user.Credentials.Email = user.Twitter.Email; // Check if already signed up. if (_userManager.EmailExists(user.Credentials.Email)) return Request.CreateResponse(HttpStatusCode.NotAcceptable, GetErrorResponse("Email already registered.")); //user.Credentials.Username = user.Twitter.TwitterId; User savedUser = _userManager.AddTwitterUser(user); UserLite lite = new UserLite(); lite.CopyFromUserIncludeCredentials(savedUser); UserCreationResponse result = new UserCreationResponse { UserId = savedUser.UserId, Token = savedUser.Credential.SecurityToken, User = lite }; return Request.CreateResponse(HttpStatusCode.OK, result); } catch (ParamMissingException e){ return Request.CreateResponse(HttpStatusCode.NotAcceptable, new ErrorResponse{ Message = e.Message }); }catch (AlreadyExistsException e){ return Request.CreateResponse(HttpStatusCode.Conflict, new ErrorResponse{ Message = e.Message }); }catch (InvalidValueException e){ return Request.CreateResponse(HttpStatusCode.NotAcceptable, new ErrorResponse{ Message = e.Message }); }catch (UserNotFoundException e){ return Request.CreateResponse(HttpStatusCode.NotFound, new ErrorResponse{ Message = e.Message }); }catch (Exception e){ return Request.CreateResponse(HttpStatusCode.InternalServerError, new ErrorResponse { Message = "Oops, server encountered an issue... " + e.Message }); } }