Beispiel #1
0
func PostLogin(c web.C, w http.ResponseWriter, r *http.Request) {
	db := c.Env["mysql"].(*sqlx.DB)

	logInEmail := utils.GetAndTrim(r, "email")
	logInPassword := utils.GetAndTrim(r, "password")

	fmt.Printf("%s\n\n", logInEmail)

	newUser := &user.User{
		Email: logInEmail,
	}

	exist := newUser.EmailExist(db)
	if exist == false {
		http.Redirect(w, r, fmt.Sprintf("/login.html?false=%s", getresponse.LogInErrEmalOrPassword), http.StatusFound)
		return
	}

	err := newUser.LoadID(db)
	if err != nil {
		http.Redirect(w, r, fmt.Sprintf("/login.html?false=%s", getresponse.LogInErrEmalOrPassword), http.StatusFound)
		return
	}

	u, err := user.Get(db, newUser.ID)
	if err != nil {
		panic(err)
	}

	if logInEmail == u.Email && logInPassword == u.Password {

		claims := map[string]interface{}{
			config.ConstID:    u.ID,
			config.ConstName:  u.UserName,
			config.ConstAdmin: u.Admin,
		}

		// Esto tiene el contenido de la cookie
		contenidoCookie := security.Encode(claims)

		// Expiración del próximo año
		fechaExpiracion := time.Now().AddDate(0, 0, 1)

		// Creo la cookie
		cookie := http.Cookie{
			Name:       "injuv_auth",
			Value:      contenidoCookie,
			Path:       "/",
			Expires:    fechaExpiracion,
			RawExpires: fechaExpiracion.Format(time.UnixDate),
		}

		http.SetCookie(w, &cookie)
		http.Redirect(w, r, fmt.Sprintf("/panel/%d.html", newUser.ID), http.StatusFound)
		return
	}
	http.Redirect(w, r, fmt.Sprintf("/login.html?false=%s", getresponse.LogInErrEmalOrPassword), http.StatusFound)
	return

}
func UpdateActivity(c web.C, w http.ResponseWriter, r *http.Request) {

	template := c.Env["render"].(*render.Render)
	db := c.Env["mysql"].(*sqlx.DB)
	bnd := binding.GetDefault(r)
	idActivity, _ := strconv.Atoi(utils.GetAndTrim(r, "id"))
	estado := utils.GetAndTrim(r, "estado")

	err := activity.UpdateStatusActivity(db, idActivity, estado)
	if err != nil {
		panic(err)
	}

	template.JSON(w, http.StatusOK, bnd)

}
func NewActivitie(c web.C, w http.ResponseWriter, r *http.Request) {
	template := c.Env["render"].(*render.Render)
	db := c.Env["mysql"].(*sqlx.DB)
	bnd := binding.GetDefault(r)

	name := utils.GetAndTrim(r, "name")
	description := utils.GetAndTrim(r, "description")
	dateExpire := utils.GetAndTrim(r, "fechaExpiracion")
	recursos := utils.GetAndTrim(r, "recurso")
	estado := utils.GetAndTrim(r, "estado")
	pioridad := utils.GetAndTrim(r, "pioridad")
	//	adjunto := utils.GetAndTrim(r, "adjunto")

	fmt.Println("\n\n\n%s", dateExpire)

	userid, _ := strconv.Atoi(recursos)

	if name == "" {
		bnd["Error"] = StrUserEmpty
	}

	if description == "" {
		bnd["Error"] = StrDescriptionEmpty
	}

	activityNew := &activity.Activity{
		Title:       name,
		Description: description,
		ExpireDate:  dateExpire,
		User:        userid,
		Estate:      estado,
		Adjuntos:    0,
		Pioridad:    pioridad,
	}

	activityNew.Create(db)

	userAdd, _ := user.Get(db, userid)

	//TO_DO LOAD EMAIL FOR USER=user

	emailSender := fmt.Sprintf(strSenderFormat, "injuv araucania", config.SendTo)
	emailFullSubject := fmt.Sprintf("%s", "Notificacion nueva tarea")
	emailMessage := fmt.Sprintf("Se a creado una nueva Tarea %s fecha termino tarea %s", name, dateExpire)
	emailFullName := fmt.Sprintf("Asignada a %s %s", userAdd.FirstName, userAdd.LastName)
	emailBody := fmt.Sprintf(
		strEmailFormat,
		emailMessage,
		emailFullName,
	)

	err := sendEmail(emailBody, emailSender, emailFullSubject, userAdd.Email)
	if err == errBadMail {
		bnd["Error"] = errStrUnableToSend
		template.JSON(w, http.StatusOK, bnd)
		return
	}

	template.JSON(w, http.StatusOK, bnd)
}
func PostEditAccount(c web.C, w http.ResponseWriter, r *http.Request) {
	bnd := binding.GetDefault(r)
	db := c.Env["mysql"].(*sqlx.DB)
	template := c.Env["render"].(*render.Render)
	id, _ := strconv.Atoi(c.URLParams["uid"])
	cookie, _ := r.Cookie("injuv_auth")
	claims, _ := security.Decode(cookie.Value)

	firstName := utils.GetAndTrim(r, "firstname")
	lastName := utils.GetAndTrim(r, "lastname")
	userName := utils.GetAndTrim(r, "userName")
	email := utils.GetAndTrim(r, "email")
	password := utils.GetAndTrim(r, "password")
	rePassword := utils.GetAndTrim(r, "repassword")
	userAdmin, _ := strconv.ParseBool(utils.GetAndTrim(r, "admin"))

	fmt.Println("%t\n\n", userAdmin)

	if firstName == "" {
		bnd["Error"] = strFirstNameEmpty
	}

	if lastName == "" {
		bnd["Error"] = strLastNameEmpty
	}

	if userName == "" {
		bnd["Error"] = strUserNameEmpty
	}

	if password == "" {
		bnd["Error"] = strPasswordEmpty
	}
	if rePassword == "" {
		bnd["Error"] = strPasswordEmpty
	}
	if password != rePassword {
		bnd["Error"] = strErrorPassword
	}

	if bnd["Error"] != nil {
		template.HTML(w, http.StatusOK, "panel/edit", bnd)
		return
	}

	newUser := &user.User{
		ID:         id,
		FirstName:  firstName,
		LastName:   lastName,
		UserName:   userName,
		Email:      email,
		Password:   password,
		Admin:      userAdmin,
		SignupDate: time.Now(),
	}
	ids := claims["id"].(float64)
	bnd["ADMIN"] = claims["guuid"]
	bnd["User"] = newUser

	newUser.Save(db)

	if claims["guuid"].(bool) == true {
		http.Redirect(w, r, fmt.Sprintf(URLPanelUserByID, int(ids), id, getresponse.ComparableValue), http.StatusFound)
		return
	}

	http.Redirect(w, r, fmt.Sprintf(URLProfileUserByID, int(ids), id, getresponse.ComparableValue), http.StatusFound)
	return

}