Example #1
0
func Upload(c *gin.Context) {
	r := c.Request
	ctx := appengine.NewContext(r)
	var err_msg string

	blobs, _, err := blobstore.ParseUpload(r)
	if err != nil {
		log.Errorf(ctx, err.Error())
		err_msg = err.Error()
	}
	file := blobs["file"]
	if len(file) == 0 {
		log.Errorf(ctx, "file length is 0")
		err_msg = "file length is 0"
	}
	c.JSON(http.StatusOK, gin.H{"err": err_msg, "blobKey": string(file[0].BlobKey)})
}
Example #2
0
func FBLogin(c *gin.Context) {
	// grab the code fragment

	aecontext := appengine.NewContext(c.Request)

	code := c.Query("code")

	fbConfig := FBConfig()

	token, err := fbConfig.Exchange(aecontext, code)

	if err != nil {
		log.Errorf(aecontext, err.Error())
	}

	client := urlfetch.Client(aecontext)
	response, err := client.Get("https://graph.facebook.com/v2.5/me?fields=id,name,email&access_token=" + token.AccessToken)
	log.Debugf(aecontext, fmt.Sprintf("token.AccessToken %#v", token.AccessToken))

	// handle err. You need to change this into something more robust
	// such as redirect back to home page with error message
	if err != nil {
		c.String(http.StatusOK, "Error")
	}

	var fb_user FB_User
	log.Debugf(aecontext, fmt.Sprintf("fb_response %#v", response))
	Bind(response, &fb_user)
	log.Debugf(aecontext, fmt.Sprintf("token %#v", token))
	user := &auth.User{
		Email:     fb_user.Email,
		Name:      fb_user.Username,
		Token:     *token,
		LoginType: "facebook",
	}

	var redir_url = ""
	if service.VerifyVolunteerRequest(c, user) {
		redir_url = "/volsuccess"
	}

	log.Debugf(aecontext, fmt.Sprintf("user %#v", user))
	if !auth.IsAuthenticated(c) {
		auth.CreateSession(c, user)
	}
	if redir_url == "" {
		auth.Redirect(c, redir_url)
	} else {
		auth.Redirect(c)
	}
}
Example #3
0
func UploadUrl(c *gin.Context) {
	r := c.Request
	ctx := appengine.NewContext(r)
	uploadURL, err := blobstore.UploadURL(ctx, "/admin/upload", nil)
	var err_msg string

	if err != nil {
		log.Errorf(ctx, err.Error())
		err_msg = err.Error()
	}

	c.JSON(http.StatusOK, gin.H{"err": err_msg, "uploadOPT": uploadURL, "uploadURL": uploadURL.String()})

}
Example #4
0
func NotifyAdmin(c *gin.Context, user *auth.User) {
	r := c.Request
	ctx := appengine.NewContext(r)
	addr := "*****@*****.**"
	msg := &mail.Message{
		Sender:  "*****@*****.**",
		To:      []string{addr},
		Subject: fmt.Sprintf("User %s raised volunteer request", user.Email),
		Body:    fmt.Sprintf("User Msg %s %s", user.Message),
	}
	log.Debugf(ctx, "Mail msg %v", msg)
	if err := mail.Send(ctx, msg); err != nil {
		log.Errorf(ctx, "Couldn't send email: %v", err)
	}
}
Example #5
0
func SendEmailVolunteer(c *gin.Context, user *auth.User) {
	r := c.Request
	ctx := appengine.NewContext(r)
	addr := user.Email
	url := createConfirmationURL(user)
	msg := &mail.Message{
		Sender:  "*****@*****.**",
		To:      []string{addr},
		Subject: "Confirm your volunteer request",
		Body:    fmt.Sprintf(confirmMessage, url),
	}
	log.Debugf(ctx, "Mail msg %v", msg)
	if err := mail.Send(ctx, msg); err != nil {
		log.Errorf(ctx, "Couldn't send email: %v", err)
	}
}
Example #6
0
func GoogleLogin(c *gin.Context) {
	// grab the code fragment

	aecontext := appengine.NewContext(c.Request)

	code := c.Query("code")

	googleconf := GoogleConfig()

	token, err := googleconf.Exchange(aecontext, code)

	if err != nil {
		log.Errorf(aecontext, err.Error())
	}

	client := urlfetch.Client(aecontext)
	response, err := client.Get("https://www.googleapis.com/userinfo/v2/me?access_token=" + token.AccessToken)
	log.Debugf(aecontext, fmt.Sprintf("token.AccessToken %#v", token.AccessToken))

	// handle err. You need to change this into something more robust
	// such as redirect back to home page with error message
	if err != nil {
		c.String(http.StatusOK, "Error")
	}

	var goog_user GoogleUser
	log.Debugf(aecontext, fmt.Sprintf("fb_response %#v", response))
	Bind(response, &goog_user)
	log.Debugf(aecontext, fmt.Sprintf("fb_response %#v", goog_user))
	user := &auth.User{
		Email:   goog_user.Email,
		Name:    goog_user.Username,
		Picture: goog_user.PictureUrl,
	}
	log.Debugf(aecontext, fmt.Sprintf("user %#v", user))
	if !auth.IsAuthenticated(c) {
		auth.CreateSession(c, user)
	}
	auth.Redirect(c)
}