func getSignedInUserQueryForProxyAuth(headerVal string) *m.GetSignedInUserQuery { query := m.GetSignedInUserQuery{} if setting.AuthProxyHeaderProperty == "username" { query.Login = headerVal } else if setting.AuthProxyHeaderProperty == "email" { query.Email = headerVal } else { panic("Auth proxy header property invalid") } return &query }
func GetSignedInUser(query *m.GetSignedInUserQuery) error { var rawSql = `SELECT u.id as user_id, u.is_admin as is_grafana_admin, u.email as email, u.login as login, u.name as name, u.theme as theme, org.name as org_name, org_user.role as org_role, org.id as org_id FROM ` + dialect.Quote("user") + ` as u LEFT OUTER JOIN org_user on org_user.org_id = u.org_id and org_user.user_id = u.id LEFT OUTER JOIN org on org.id = u.org_id ` sess := x.Table("user") if query.UserId > 0 { sess.Sql(rawSql+"WHERE u.id=?", query.UserId) } else if query.Login != "" { sess.Sql(rawSql+"WHERE u.login=?", query.Login) } else if query.Email != "" { sess.Sql(rawSql+"WHERE u.email=?", query.Email) } var user m.SignedInUser has, err := sess.Get(&user) if err != nil { return err } else if !has { return m.ErrUserNotFound } if user.OrgRole == "" { user.OrgId = -1 user.OrgName = "Org missing" } query.Result = &user return err }