コード例 #1
0
ファイル: UserManager.cs プロジェクト: fernandatoledo/prueba
        public User AddFacebookUser(FbUserLite liteUser)
        {
            if (liteUser.Facebook == null || Extensions.ExtensionMethods.IsEmptyOrSpace(liteUser.Facebook.FbId))
                throw new ParamMissingException("Facebook ID cannot be empty.");
            else
                if (FbIdExists(liteUser.Facebook.FbId))
                    throw new AlreadyExistsException("Facebook ID already registered.");

            if (EmailExists(liteUser.Credentials.Email))
                throw new AlreadyExistsException("Email 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.");

            Role role = Repository.Single<Role>(x => x.RoleId.Equals(liteUser.RoleId) && x.Deleted == false);
            if (role == null)
                throw new InvalidValueException("Role Id is invalid.");
            if (UsernameExists(liteUser.Credentials.Username))
                throw new AlreadyExistsException("Username already exists.");

            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,
                Facebook = liteUser.Facebook,
                LastModified = currentTime,
                Photo = liteUser.Photo,
                RoleId = liteUser.RoleId,
                Address = liteUser.Address,
                UserId = Guid.NewGuid().ToString(),
                DisplayName = string.IsNullOrEmpty(liteUser.DisplayName) ?
                                        string.IsNullOrEmpty(liteUser.Facebook.FbUsername) ?
                                                liteUser.Credentials.Username : liteUser.Facebook.FbUsername
                                        : liteUser.DisplayName.Trim()
            };

            user.CredentialId = user.Credential.CredentialId;

            Repository.Add<User>(user);
            Repository.Save();
            return user;
        }
コード例 #2
0
        public HttpResponseMessage PostRegisterWithFacebook(FbUserLite 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.Facebook == null
                    || ExtensionMethods.IsEmptyOrSpace(user.Facebook.FbAccessToken)
                    || ExtensionMethods.IsEmptyOrSpace(user.Facebook.FbId)
                    || (ExtensionMethods.IsEmptyOrSpace(user.Facebook.FbEmail)
                        && ExtensionMethods.IsEmptyOrSpace(user.Credentials.Email))
                    //|| ExtensionMethods.IsEmptyOrSpace(user.Credentials.MobileNumber)
                    )
                    return Request.CreateResponse(HttpStatusCode.NotAcceptable, GetErrorResponse("Missing required param."));

                user.Facebook.FbEmail = user.Facebook.FbEmail.ToLower();

                //user.Credentials.Password = ExtensionMethods.ToSHA1EncodedString(user.Credentials.Password);

                //user.Credentials.Password = ExtensionMethods.ToSHA1EncodedString(user.Credentials.Password);
                user.Credentials.Username = user.Credentials.Username.Trim().ToLower();
                if (user.Credentials.Email == null || ExtensionMethods.IsEmptyOrSpace(user.Credentials.Email))
                    user.Credentials.Email = user.Facebook.FbEmail;
                // Check if already signed up.
                //if (_userManager.EmailExists(user.Credentials.Email))
                //    return Request.CreateResponse(HttpStatusCode.NotAcceptable, GetErrorResponse("Email already registered."));

                //if (_userManager.UsernameExists(user.Credentials.Username))
                //   return Request.CreateResponse(HttpStatusCode.NotAcceptable, GetErrorResponse("Username already registered."));
                //user.Credentials.Username = user.Facebook.FbId;
                User savedUser = _userManager.AddFacebookUser(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, GetErrorResponse("Oops, server encountered an issue... " + e.Message ));
            }
        }