Beispiel #1
0
func CreateUser(ur types.UserRequest) (types.CreateUserResponse, error) {
	var err error
	var u types.User
	var userByEmail types.UserByEmail
	var response types.CreateUserResponse
	err = nil

	if !ur.IsAnonymous {
		userByEmail, err = GetUserByEmail(ur.Email)
	}

	if ur.IsAnonymous || (!ur.IsAnonymous && err != nil && err.Error() == "not found") {
		err = nil

		var username string
		wordnikResponse, err := utilsservice.GenerateRandomUsername()
		if err != nil {
			username = "******"
			err = nil
		} else if len(wordnikResponse) >= 2 {
			username = fmt.Sprintf("%v %v", wordnikResponse[0].Word, wordnikResponse[1].Word)
		} else {
			username = "******"
		}

		u.UserId = uuid.NewRandom()
		u.Username = username
		u.Timestamp = int64(time.Now().UTC().Unix())
		u.DeviceType = ur.DeviceType
		u.Email = ur.Email
		u.FacebookAccessToken = ur.FacebookAccessToken
		u.GenderPreference = ur.GenderPreference
		u.GoogleAccessToken = ur.GoogleAccessToken
		u.IsAnonymous = ur.IsAnonymous
		u.IsTest = false
		u.Password = ur.Password
		u.PushToken = ur.PushToken
		u.TwitterAccessToken = ur.TwitterAccessToken

		response, err = userRepo.CreateUser(u)
	} else if userByEmail.Email != "" {
		err = errors.New("email already registered")
	}

	return response, err
}